我正在使用 Entity Framework 4.1 开发 MVC3 应用程序。我进行了 LINQ 查询,并将其返回为IEnumerable<T>
. 但是,在控制器中,我必须使用Include(other entity)
,比如 in ObjectSet
,这样我才能在视图中显示其他实体值(与我正在查询的实体值相关联)。我尝试了从IEnumerable<T>
to显式转换ObjectSet<T>
,但它引发了异常。有什么方法可以从中获取ObjectSet
或IEnumerable
将实体包含在其中IEnumerable
吗?
提前致谢。
问问题
731 次
2 回答
2
如果您的上下文仍然存在(如果您还没有离开使用)并且如果您还没有完成.ToList()
,您应该能够转换为ObjectQuery<T>
.
一种更安全的做法是使用扩展方法,在IQueryable<T>
该方法上检查 queryable 是否为 a ObjectQuery<T>
,如果是,则转换为ObjectQuery<T>
并返回结果 .Include() 否则返回输入查询。
于 2012-09-02T15:42:04.727 回答
0
一旦将它转换为 IEnumerable,它就会与数据源断开连接。
当 DAL 仍然是 IQueryable 或 IObjectQuery 时,您应该在 DAL 中包含相关实体,然后将完整结果作为 IEnumerable 返回。
否则,您将对数据库进行额外的打击。
硅
于 2012-09-02T15:33:14.383 回答