1

嘿家伙, 我想创建一个TPH映射层次结构,其中的歧视性条款是经典的“IS NOT NULL” /“IS NULL”的情况。实体框架4-TPH继承特性CTP5(代码第一)与“IS NULL”鉴别器

这里是例如,数据库明智:

CREATE TABLE info.EducationTypes 
(
    ID INT NOT NULL PRIMARY KEY, 
    Name NVARCHAR(64) NOT NULL, 
    FKParentID INT NULL REFERENCES info.EducationTypes(ID) 
) 

的想法是有一个类层次结构类似以下:

public abstract class EducationType 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 

public class MainEducationType : EducationType 
{ 
    public IEnumerable<SubEducationType> SubTypes { get; set; } 
} 

public class SubEducationType : EducationType 
{ 
    public MainEducationType MainType { get; set; } 
} 

我得到这个架构“工作”中的经典XML模型,但我真的无法找到一种方法,通过使用代码优先的方法来实现它。这是我试过的...

var educationType = modelBuilder.Entity<EducationType>(); 
educationType.Map<MainEducationType>(m => m.Requires("FKParentID").HasValue(null)); 
educationType.Map<SubEducationType>(m => m.Requires("FKParentID")); 

你有什么建议吗?

回答

3

不幸的是,CTP5目前不支持在TPH映射中为鉴别器列设置一个空值。 EF团队在here以及here也证实了这一点。他们正在审视它,看看它们是否可以使其适用于RTM。