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