Описание < /h2>
Уважаемая All, < /p>
У меня есть веб -приложение C osp net Core, которое использует стратегию таблицы для конкретного типа (TPC) в его структура базы данных. < /p>
Для простоты допустим, что мое приложение имеет исключительно 3 таблицы: A, B и c. < /p>
относительно таблицы A, Он имеет два столбца (C1 и C2), а также уникальный столбец идентификатора (с именем «ID»). C1 является нулевым столбцом Dateonly; C2-это не нулеваемый столбец Dateonly. Таким образом, из обсуждения опущены. Таблицы B и C сопоставлены с классами «class_b» и «class_c», соответственно. Наконец, class_b и class_c являются прямыми потомками class_a. < /P>
ограничение < /h2>
Один из моих бизнес -случаев подразумевает ограничение базы данных над таблицей A. C1 должен быть больше, чем C2, когда C1 не является нулевым. < /P>
Вопрос < /h2>
Учитывая вышеупомянутый контекст, как можно реализовать ограничение на Table_a, используя беглый API во время создания моделей? Это ограничение должно быть непосредственно применимым и наследственным его потомками. Между тем, документация Microsoft не ссылается на какое -либо потенциальное конфликт ограничений (см. Здесь) из -за стратегии TPC (см. Здесь, здесь и здесь).
реализация ограничения (пример кода) >
namespace MyApplication.DataPersistance
public class Class_A
{
public DateOnly? C1 {get;set;}
public DateOnly C2 {get;set;}
}
public class Class_B: Class_A
{
// ... other properties
}
public class Class_C: Class_A
{
// ... other properties
}
public class ApplicationDbContext: IdentityDbContext
{
public DBSet A {get;set;}
public DBSet B {get;set;}
public DBSet C {get;set;}
// ... other tables
public ApplicationDbContext(DbContextOptions options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity(entity=>{
entity.ToTable(b => b.HasCheckConstraint("CK_Class_A_C1_gt_C2", "[C1] > [C2]"));
entity.UseTpcMappingStrategy();
});
modelBuilder.Entity(entity=>{
});
modelBuilder.Entity(entity=>{
});
// ... configuration of other tables ...
}
}
< /code>
Заключение < /h3>
Пока что стратегия TPC, по -видимому, имеет некоторые ограничения в отношении реализаций ограничения базы данных. Тем не менее, я хочу узнать мнение и опыт сообщества Stackoverflow в этой теме.
Искренне,
Подробнее здесь: https://stackoverflow.com/questions/794 ... work-ef-cl
Как реализовать ограничение базы данных в классе C# Entity Framework (EF), который применяет стратегию таблицы для конкр ⇐ C#
Место общения программистов C#
1739823478
Anonymous
Описание < /h2>
Уважаемая All, < /p>
У меня есть веб -приложение C osp net Core, которое использует стратегию таблицы для конкретного типа (TPC) в его структура базы данных. < /p>
Для простоты допустим, что мое приложение имеет исключительно 3 таблицы: A, B и c. < /p>
относительно таблицы A, Он имеет два столбца (C1 и C2), а также уникальный столбец идентификатора (с именем «ID»). C1 является нулевым столбцом Dateonly; C2-это не нулеваемый столбец Dateonly. Таким образом, из обсуждения опущены. Таблицы B и C сопоставлены с классами «class_b» и «class_c», соответственно. Наконец, class_b и class_c являются прямыми потомками class_a. < /P>
ограничение < /h2>
Один из моих бизнес -случаев подразумевает ограничение базы данных над таблицей A. C1 должен быть больше, чем C2, когда C1 не является нулевым. < /P>
Вопрос < /h2>
Учитывая вышеупомянутый контекст, как можно реализовать ограничение на Table_a, используя беглый API во время создания моделей? Это ограничение должно быть непосредственно применимым и наследственным его потомками. Между тем, документация Microsoft не ссылается на какое -либо потенциальное конфликт ограничений (см. Здесь) из -за стратегии TPC (см. Здесь, здесь и здесь).
реализация ограничения (пример кода) >
namespace MyApplication.DataPersistance
public class Class_A
{
public DateOnly? C1 {get;set;}
public DateOnly C2 {get;set;}
}
public class Class_B: Class_A
{
// ... other properties
}
public class Class_C: Class_A
{
// ... other properties
}
public class ApplicationDbContext: IdentityDbContext
{
public DBSet A {get;set;}
public DBSet B {get;set;}
public DBSet C {get;set;}
// ... other tables
public ApplicationDbContext(DbContextOptions options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity(entity=>{
entity.ToTable(b => b.HasCheckConstraint("CK_Class_A_C1_gt_C2", "[C1] > [C2]"));
entity.UseTpcMappingStrategy();
});
modelBuilder.Entity(entity=>{
});
modelBuilder.Entity(entity=>{
});
// ... configuration of other tables ...
}
}
< /code>
Заключение < /h3>
Пока что стратегия TPC, по -видимому, имеет некоторые ограничения в отношении реализаций ограничения базы данных. Тем не менее, я хочу узнать мнение и опыт сообщества Stackoverflow в этой теме.
Искренне,
Подробнее здесь: [url]https://stackoverflow.com/questions/79446517/how-to-implement-a-database-constraint-within-a-c-sharp-entity-framework-ef-cl[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия