我正在使用具有 Code First 和 Table per Hierarchy (TPH) 继承的 Entity Framework 6.0。
请参阅以下 MWE(我省略了其他 fluent 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
for 列Type
(应该是鉴别器列)的条目映射到 class CEO
。1
与列的条目不同的所有条目Type
都应映射到类Other
。
这里出现了两个问题。第一个是如何编写.HasValue(**<>1**));
正确的代码。第二件事是我想Type
在我的代码中使用该列,但由于这是鉴别器列,我无权访问它。