我对一个相当特殊的继承策略以及它如何在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映射到任何东西,因为它根据子类型而变化。
答案 0 :(得分:0)
这可能有点作弊,但您可以将数据库中的集合组合起来然后将其拉入实体框架吗?您可能需要创建一个具有所有属性的实体,如果该属性在B中不存在(即仅在D1或D2中),那么它必须是可为空的。