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