获取Entity Framework原始查询以尊重属性

Mik*_*keb 7 entity-framework

我正在使用EF4,代码优先.因此,我的模型类混合了公共属性,一些虚拟属性(对于来自其他表的延迟加载数据)和一些附加[NotMapped]属性的属性,以便EF跳过它们.

有时我喜欢使用原始查询:c.Database.SqlQuery<T>("select ...")使用EF作为行映射器.

我注意到在Intellitrace中,这些查询产生了很多抛出并捕获了"IndexOutOfRange"的异常.经过一番查看后,模型对象的虚拟和[NotMapped]属性都是例外.我不想构建一个只包含表属性的新数据模型类或父类; 是否有一些配置步骤我错过了告诉原始查询运行器中的行映射器注意其余EF使用的相同注释?也许他们在EF5修好了?

Lad*_*nka 5

如果执行dbContext.Database.SqlQueryEF 将永远不会使用映射。它将仅使用结果集中属性名称和列的简单匹配。尝试使用dbSet.SqlQuery。它应该反映映射,因为它可以将数据作为附加实体加载。