实体框架中两个上下文之间的继承

时间:2011-05-01 23:40:27

标签: c# .net entity-framework entity-framework-4

我在一个dll中有一个edmx,并且需要在另一个dll中的edmx中有一个实体从第一个edmx中的实体继承。我试图用第二个扩展第一个edmx的初始上下文但没有成功。实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

这是不可能的。一个EDMX =一个ObjectContext,其中没有继承。我发现special hack如何强制上下文加载多个EDMX,但它们必须位于同一个程序集中,并且它仅适用于交叉EDMX linq-to-entities查询。

我认为你必须在第二个EDMX中再次建模整个继承层次结构,并且为parent = parent实体重用相同的POCO类必须在两个EDMX中。查看这些有关使用多个模型的文章(part 1part 2)。可以从其他EDMX中的一个EDMX重用CSDL类型来定义关联,但它不能用于继承,因为继承是在MSL中定义的,不能重用。

答案 1 :(得分:0)

继承可能不是最佳解决方案。我建议来自不同组件的两个实体的依赖注入,例如:

public class CompositeObj
{
    protected ObjectType1 obj1 { get; set; }
    protected ObjectType2 obj2 { get; set; }

    public CompositeObj(ObjectType1 obj1, ObjectType2 obj2)
    {
         this.obj1 = obj1;
         this.obj2 = obj2;
    }

    public string Property1 { get { return this.obj1.Property1; } }
    public string Property2 { get { return this.obj2.Property2; } }
    pulbic string Property3 { get { return this.obj1.Property1 + this.obj2.Property2; } }
}