2014-02-27 62 views
2

我在我的數據庫中使用每種類型表(TPT)繼承模式映射到實體框架模型(數據庫優先)時具有以下表層次結構:防止在實體框架中加載TPT繼承中的子類錶行

TPT inheritance

在EF模型的映射是直接的:AssetContent是一個抽象基類,而其他2是具體的子類。

AssetContent表參與與另一個表的參與多對多關係,爲了保持圖片清晰,省略了它。

我的問題是,我如何構建Linq-to-Entities查詢以使用Include()加載相關的AssetContent表,使2'子表完全不加載?這對DatabaseAssetContent表尤其重要,該表的BinaryContent字段可能相當大,並且與我想要構建的查詢的發行者無關。據我觀察,實體框架自動加載一個表的整個層次結構,無論延遲加載是否啓用,但我有興趣只加載AssetContent表中的行。

這樣的查詢可能使用Linq-to-Entities(對於實體框架6)?

回答

0

最終,我將AssetContent表格的字段(Id除外)移動到另一個新表格AssetContentWithMetadata中,該表格與AssetContent表格具有1-1的關係。這樣,AssetContent表仍然有點尷尬,只有一個字段(ID),但是現在我可以單獨加載元數據表,而不會爲內容加重負擔。