我的数据库中具有以下表层次结构,这些层次结构使用“按表类型”(TPT)继承模式映射到实体框架模型(数据库优先):



EF模型中的映射很简单:AssetContent是基本抽象类,而其他2个是具体子类。

AssetContent表与另一个表进行多对多关系,为了保持画面清晰,省略了该表。

我的问题是,我该如何构建一个Linq-to-Entities查询以使用AssetContent加载相关的Include()表,从而根本不加载2个“子表”?这对于DatabaseAssetContent表尤其重要,该表的BinaryContent字段可能很大,并且与我要构建的查询的发布者无关。据我观察,无论是否启用延迟加载,Entity Framework都会自动加载表的整个层次结构,但是我只对加载AssetContent表中的行感兴趣。

使用Linq-to-Entities(对于Entity Framework 6)是否可以进行这种查询?

最佳答案

最终,我将AssetContent表的字段(Id除外)移到了另一个名为AssetContentWithMetadata的新表中,该表与AssetContent表具有1-1的关系。这样,AssetContent表的确确实有点尴尬,只有一个字段(ID),但是现在我可以单独加载元数据表,而不会给内容增加负担。

关于c# - 防止在 Entity Framework 的TPT继承中加载子类表行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22072197/

10-17 02:35