0
我有一个类表示对象A:EF脚手架基类成员
public class A
{
[Key]
private int _ID;
private string _property;
public ID {get {return _ID;} set {_ID = value;}}
public ID {get {return _property;} set {_property = value;}}
}
我脚手架这个类成DB如表使用EF A(添加迁移,更新数据库)
我有另一个三个对象B,C,D具有类似属性,所以我为它们创建了一个基类。从它
public class Base_B_C_D
{
[Key]
protected int _ID;
protected string _prop;
protected List<A> A_List;
public ID {get {return _ID;} set {_ID = value;}}
public ID {get {return _prop;} set {_prop = value;}}
}
和继承B,C,d:所有这些对象必须包含类型A的对象的列表,以便创建参照甲
public class B:Base_B_C_D {}
public class C:Base_B_C_D {}
public class D:Base_B_C_D {}
当我脚手架B,C, D到DB使用EF我没有看到任何表中的任何FK,并且没有链接之间A和B,C,D ...
问题是:什么是正确的方式如何搭建这样的链接? 在此先感谢!
此方法仅适用于B,C和D具有与BASE_B_C_D具有完全相同的属性,但是如果它们实现了更多属性(如您所写),那么这些属性将被存储在哪里,因为我们只有一个具有BASE_B_C_D属性列的DbSet?当我在B或者С或者D中包含List 时,我知道出现在A中的abuot FK ...但是如果我必须在每个派生类中包含List ,那么在那种情况下继承是什么?我们的目标是在BASE_B_C_D中包含List ,而不是在B或C或D中重写它,而只是通过继承来使用 – versus 2013-04-07 13:21:48
当使用TPT继承时,我们只在类型基类的DbSet上创建。使用[Table(“...”)]注释派生类将为数据库中的每个派生类创建表,其中列将直接映射到派生类中的属性,即,这是存储其他属性的位置。我不太确定FK是否可以通过继承按照您描述的方式在EF中实现 - 我总是创建一个集合来表示“多”FK。继承允许重用代码并在类之间创建is-a关系。 – MattSull 2013-04-07 13:40:23