Для простоты, скажем что мое приложение имеет исключительно 3 таблицы: A, B и C.
Код: Выделить всё
Id
ограничение
Один из моих бизнес -случаев подразумевает ограничение базы данных За таблицей A. В частности, столбец C1 должен быть больше, чем C2, когда C1 не является нулевым.
Вопрос
В приведенном выше контексте, как можно реализовать ограничение на Table_A, используя Fluent API во время создания моделей? Это ограничение должно быть непосредственно применимым и наследственным его таблицами потомков. Между тем, документация Microsoft не ссылается на какое -либо потенциальное конфликт ограничений (см. Здесь) из -за стратегии TPC (см. Здесь, здесь и здесь).
реализация ограничения ( Пример кода) < /p>
Код: Выделить всё
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 DbSets
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 ...
}
}
Пока что стратегия TPC, по -видимому, имеет некоторые ограничения в отношении реализаций ограничения базы данных. Тем не менее, я хочу узнать мнение и опыт сообщества Stackoverflow в этой теме.
Искренне,
Подробнее здесь: https://stackoverflow.com/questions/794 ... work-ef-cl