8

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

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

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

4

1 回答 1

5

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

于 2012-09-24T22:04:56.330 回答