实体框架继承

时间:2010-12-02 10:35:45

标签: entity-framework inheritance ado.net entity-framework-4

我对一个相当特殊的继承策略以及它如何在Entity Framework 4.0中实现感兴趣。我已经做了一些阅读,但我不确定三种标准解决方案中的任何一种都是适用的(每个类型的表,每个层次的表,每个具体的表类型)。

我将把问题概括为一个更容易的问题。假设我有一个抽象基类实体B,以及两个派生实体D1和D2。

现在,D1和D2被映射到单独的定义查询 - 即使它们由于共享基类B而共享属性,但这些属性不会从存储中的相同位置拉出。

到目前为止一切都很好,但我真的需要能够公开一个ObjectSet< B>,即一个联合D1和D2项的集合。

这可能吗?

提前感谢您的帮助。

编辑:这里有一些更详细的要求。

实体POCO

public abstract class B {
    public int ID { get; set; }
    public DateTime SomeDate { get; set; }
}
public sealed class D1 : B {
    public string SomeInfo { get; set; } 
}
public sealed class D2 : B {
    public decimal SomeNumber { get; set; }
}

我无法正确地格式化XML,但基本上D1被映射到定义查询,D2也是。我不能将B映射到任何东西,因为它根据子类型而变化。

1 个答案:

答案 0 :(得分:0)

这可能有点作弊,但您可以将数据库中的集合组合起来然后将其拉入实体框架吗?您可能需要创建一个具有所有属性的实体,如果该属性在B中不存在(即仅在D1或D2中),那么它必须是可为空的。