0

我首先使用 EF 5.0 和 Code,需要使用手动 sql 查询填充实体数组。但是,我不需要从 db 加载整个实体,而只需加载几个字段。我也不需要跟踪。

两个都

Context.Set<TEntity>().SqlQuery(queryText, parameters)

Context.Database.SqlQuery<TEntity>(queryText, parameters)

正在抛出异常:

The data reader is incompatible with the specified 'XXX_Type'. A member of the type, 'XXX_Some_Not_Loaded_Property', does not have a corresponding column in the data reader with the same name.

有什么方法可以强制 EF 忽略缺失的字段?

4

1 回答 1

0

例如,您可以使用默认值来“选择为”

Select Col1, 0 as Col2, getdate() as DateCreated from Table1 

在上面的 Table1 中可以有一个名为 Col2 的整数列,但我们没有选择它。相反,我们选择 0 作为Col2,这不会导致任何问题。

同样,我选择当前日期作为 DateCreated,尽管数据库中可能有一个名为 DateCreated 的列。

这应该会欺骗 EF。您可能仍然应该搜索如何禁用跟踪,以免它用这些默认值覆盖数据库行。

于 2013-05-20T22:47:57.957 回答