我在一个dll中有一个edmx,并且需要在另一个dll中的edmx中有一个实体从第一个edmx中的实体继承。我试图用第二个扩展第一个edmx的初始上下文但没有成功。实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
这是不可能的。一个EDMX =一个ObjectContext
,其中没有继承。我发现special hack如何强制上下文加载多个EDMX,但它们必须位于同一个程序集中,并且它仅适用于交叉EDMX linq-to-entities查询。
我认为你必须在第二个EDMX中再次建模整个继承层次结构,并且为parent = parent实体重用相同的POCO类必须在两个EDMX中。查看这些有关使用多个模型的文章(part 1,part 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; } }
}