IEnumerable的<>到ObjectSet<>,原因:INCLUDE

时间:2012-09-02 15:20:42

标签: .net entity-framework linq-to-entities entity-framework-4.1 ienumerable

我正在使用Entity Framework 4.1开发MVC3应用程序。我做了LINQ查询,并将其作为IEnumerable<T>返回。但是,在控制器中,我必须使用Include(other entity),就像ObjectSet一样,所以我可以在视图中显示其他实体值(与我正在查询的实体值相关联)。我尝试了从IEnumerable<T>ObjectSet<T>的显式转换,但它会抛出异常。有什么方法可以从ObjectSet获取IEnumerable,或者在IEnumerable中包含实体吗? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

如果你的情境仍然存在(如果你还没有离开使用),如果你没有完成.ToList(),你应该能够投射到ObjectQuery<T>

更安全的做法是在IQueryable<T>上使用扩展方法检查queryable是否为ObjectQuery<T>,如果是,则转换为ObjectQuery<T>并返回结果.Include()否则返回输入查询。

答案 1 :(得分:0)

一旦将其转换为IEnumerable,它就会与数据源断开连接。

您应该在DAL中包含相关实体,同时它仍然是IQueryable或IObjectQuery,然后将完整结果作为IEnumerable返回。

否则,您将对数据库进行额外的打击。

的Si