Я использую Entity Framework 6.0 с наследованием Code First и Table for Hierarchy (TPH).Код структуры Entity Framework Первый разделитель TPH Столбец
Смотрите следующий MWE (я опускаю другие операторы свободно API уточнить, где проблема):
public abstract class Employee
{
public int EmployeeId { get; set; }
public string Type { get; set; }
}
public class CEO : Employee
{
public CEO() {Type = 1}
}
public class Other : Employee
{
}
public class InheritanceMappingContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Employee>()
.Map<CEO>(m => m.Requires("Type").HasValue(1))
.Map<Other>(m => m.Requires("Type").HasValue(**<>1**));
}
}
Я хотел бы отобразить все записи, которые имеют 1
для столбца Type
(который должен быть столбец дискриминатора) к классу CEO
. Все записи с позицией, отличной от 1
для столбца Type
, должны быть сопоставлены классу Other
.
Здесь возникают две проблемы. Первый способ - написать .HasValue(**<>1**));
в качестве правильного кода. Во-вторых, я хочу использовать столбец Type
в своем коде, но поскольку это столбец дискриминатора, у меня нет доступа к нему.
Благодарим вас, хороший момент о наследовании. Я изменил концепцию на один класс Employee с атрибутом 'Type' как дискриминатором внутри кода, но только с одной таблицей и без столбца дискриминатора. – user2653422