實體框架6默認情況下,當它遇到繼承時,會創建一個具有TPH,TPT或TPC的特殊實體層次結構。但我希望EF將我的課程視爲完全獨立的實體。使EF將繼承層次視爲完全獨立的實體
我有下面的類層次結構中的每個類映射到一個查看在DB:
[Table("v_Item")]
class Item
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
}
[Table("v_ItemWithDescription")]
class ItemWithDescription : Item
{
public string Description { get; set; }
}
這樣的設計使得在需要時能夠獲得更詳細的信息。它是如此乾燥。這也是很好的投IQueryable
:
IQueryable<ItemWithDescription> query = ...;
((IQueryable<Item>) query).Where(i => i.Name == "Foo")
但EF堅持加鑑別列,嚴重扭曲了查詢。似乎沒有辦法讓EF忘記這些類具有繼承層次結構!
將歧視列添加到視圖並切換到TPC沒有幫助,因爲在查詢中出現大量UNION
。看來我唯一的選擇是修改EF源代碼,如果我想堅持我的繼承方法。有沒有更簡單的解決方案?
在此先感謝!
非常感謝!這是一個幾乎完美的解決方案,適合我的需求,非常聰明的技巧既可以重用代碼,也可以放棄無用。我肯定希望只用EF來忽略它,也許有一天我會重新訪問這個代碼。 –
很高興我能幫到你。 – Iravanchi