Как реализовать ограничение базы данных в классе C# Entity Framework (EF), который применяет стратегию таблицы для конкрC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как реализовать ограничение базы данных в классе C# Entity Framework (EF), который применяет стратегию таблицы для конкр

Сообщение Anonymous »

У меня есть основное веб-приложение ASP.NET, записанное в C#, в котором используется стратегия таблицы-зарезок (TPC) в своей структуре базы данных. < /p>
Для простоты, скажем что мое приложение имеет исключительно 3 таблицы: A, B и C.). C1 является нулевым столбцом Dateonly; C2-это не нулеваемый столбец Dateonly. Таким образом, из обсуждения опущены. Таблицы B и C сопоставлены с классами «class_b» и «class_c», соответственно. Наконец, class_b и class_c являются прямыми потомками class_a.
ограничение
Один из моих бизнес -случаев подразумевает ограничение базы данных За таблицей 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»