Entity Framework 4 — наследование TPH в функциях CTP5 (сначала код) с дискриминатором IS NULL

Привет, ребята, я пытаюсь создать отображение TPH в иерархии, где разделяющим предложением является классический случай «IS NOT NULL» / «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"));

У вас есть какие-либо предложения?


person Kralizek    schedule 16.02.2011    source источник


Ответы (1)


К сожалению, наличие нулевого значения для столбца дискриминатора в сопоставлении TPH в настоящее время не поддерживается в CTP5. Это подтверждено командой EF на здесь, а также здесь< /а>. Они смотрят на это, чтобы увидеть, смогут ли они заставить его работать для RTM.

person Morteza Manavi    schedule 16.02.2011