3
我最近開始在Code First使用EF,並且遇到了這個讓我感到困惑的問題。我會很感激任何關於這個主題的反饋,這將有助於我解決上述問題。NHibernate'Bags'在實體框架中的實現
請考慮下面的示例....
public class SomeType
{
public SomeType()
{
Properties = new List<BaseProperty>();
}
public int PrimaryKey { get; set; }
public string Name { get; set; }
public List<BaseProperty> Properties { get; set; }
}
public abstract class BaseProperty
{
public int PrimaryKey { get; set; }
public string PropertyName { get; set; }
// FK set through Type Configuration File.
public SomeType ParentInstance { get; set; }
}
public class PropertyA : BaseProperty
{
// some unique properties.
}
public class PropertyB : BaseProperty
{
// some unique properties.
}
public class PropertyC : BaseProperty
{
// some unique properties.
}
public class PropertyD : BaseProperty
{
// some unique properties.
}
所有這些工作很大與適當的類型的配置類,其地圖到2個表(1「SOMETYPE」和第二關於「BaseProperty」沿與其餘派生實體通過使用鑑別器列)。
現在,由於我無法控制的情況下,我被迫修改「SOMETYPE」到這樣的事情....
public class SomeType
{
public SomeType()
{
PropertiesAB = new List<BaseProperty>();
PropertiesC = new List<PropertyC>();
PropertiesD = new List<PropertyD>();
}
public int PrimaryKey { get; set; }
public string Name { get; set; }
public List<BaseProperty> PropertiesAB { get; set; } // collection of PropertyA and PropertyB
public List<PropertyC> PropertiesC { get; set; } // collection of PropertyC
public List<PropertyD> PropertiesD { get; set; } // collection of PropertyD
}
這將是非常非常容易使用袋NHibernate的做,但在使用Code First的EF中是否存在等同的暗示?有什麼想法嗎 ? 我不想寫我自己的集合的implimentation,它將轉發和操作這些新列表上執行的所有操作,並將其實際映射到數據庫的主列表。
請忽略任何缺少的「虛擬」修飾符或上述代碼中的任何其他內容,因爲它只是一個示例,實際上並不是我正在使用的。
謝謝你的回覆。
以外使用的是什麼'BasePropertyC '和'BasePropertyD'? –
哦對不起。 'BasePropertyC'和'BasePropertyD'應該分別是'PropertyC'和'PropertyD'。我的錯。 – James
「PropertiesAB」呢?我可以在'PropertiesAB'中存儲'PropertyD'(我可以,因爲'PropertiesAB'是'BaseProperty'的集合,'PropertyD'是'BaseProperty'的擴展]? –