我首先使用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忽略丢失的字段?
答案 0 :(得分:0)
您可以使用默认值执行“选择为”,例如
Select Col1, 0 as Col2, getdate() as DateCreated from Table1
在上面,Table1可以有一个名为Col2的整数列,但我们没有选择它。相反,我们选择0作为 Col2 ,这不会导致任何问题。
同样,我选择当前日期为DateCreated,尽管数据库中可能有一个名为DateCreated的列。
这应该欺骗EF。您可能仍应搜索如何禁用跟踪,以免它使用这些默认值覆盖数据库行。