我的数据库中具有以下表层次结构,这些层次结构使用“按表类型”(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/