0
我使用實體框架6.0與代碼優先和表每層次(TPH)繼承。實體框架代碼第一個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
。對於Type
列,條目不同於1
的所有條目都應映射到類Other
。
這裏出現兩個問題。第一個是如何編寫.HasValue(**<>1**));
作爲正確的代碼。第二件事是我想在我的代碼中使用Type
列,但由於這是鑑別器列,我無法訪問它。
謝謝,關於繼承的好處。我將該概念更改爲一個具有'Type'屬性的類Employee,作爲代碼中的鑑別器,但只有一個表和沒有鑑別器列。 – user2653422