使用EF进行手动sql查询的部分加载

时间:2013-05-20 22:27:24

标签: sql entity-framework

我首先使用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忽略丢失的字段?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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