1

我正在使用 Entity Framework 4.1 开发 MVC3 应用程序。我进行了 LINQ 查询,并将其返回为IEnumerable<T>. 但是,在控制器中,我必须使用Include(other entity),比如 in ObjectSet,这样我才能在视图中显示其他实体值(与我正在查询的实体值相关联)。我尝试了从IEnumerable<T>to显式转换ObjectSet<T>,但它引发了异常。有什么方法可以从中获取ObjectSetIEnumerable将实体包含在其中IEnumerable吗?
提前致谢。

4

2 回答 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 回答