我正在使用Entity Framework 4.1开发MVC3应用程序。我做了LINQ查询,并将其作为IEnumerable<T>
返回。但是,在控制器中,我必须使用Include(other entity)
,就像ObjectSet
一样,所以我可以在视图中显示其他实体值(与我正在查询的实体值相关联)。我尝试了从IEnumerable<T>
到ObjectSet<T>
的显式转换,但它会抛出异常。有什么方法可以从ObjectSet
获取IEnumerable
,或者在IEnumerable
中包含实体吗?
提前谢谢。
答案 0 :(得分:2)
如果你的情境仍然存在(如果你还没有离开使用),如果你没有完成.ToList()
,你应该能够投射到ObjectQuery<T>
。
更安全的做法是在IQueryable<T>
上使用扩展方法检查queryable是否为ObjectQuery<T>
,如果是,则转换为ObjectQuery<T>
并返回结果.Include()否则返回输入查询。
答案 1 :(得分:0)
一旦将其转换为IEnumerable,它就会与数据源断开连接。
您应该在DAL中包含相关实体,同时它仍然是IQueryable或IObjectQuery,然后将完整结果作为IEnumerable返回。
否则,您将对数据库进行额外的打击。
的Si