我正在开发MVC3应用程序,使用实体框架4.1。我做了LINQ查询,并将其作为IEnumerable<T>返回。但是,在控制器中,我必须使用Include(other entity),就像在ObjectSet中一样,这样我就可以在视图中显示其他实体值(它与我正在查询的实体值相关联)。我尝试了从IEnumerable<T>到ObjectSet<T>的显式转换,但它抛出了异常。有没有办法从IEnumerable获取ObjectSet,或者在IEnumerable中包含entity
提前谢谢。
发布于 2012-09-02 23:42:05
如果您的上下文仍然有效(如果您还没有停止使用),并且如果您还没有执行过.ToList(),那么您应该能够转换为ObjectQuery<T>。
更安全的做法是在IQueryable<T>上使用扩展方法,该方法检查queryable是否为ObjectQuery<T>,如果是,则强制转换为ObjectQuery<T>并返回结果。否则,.Include()将返回输入查询。
发布于 2012-09-02 23:33:14
一旦您将其转换为IEnumerable,它就会与数据源断开连接。
您应该在DAL仍然是IQueryable或IObjectQuery时将相关实体包括在DAL中,然后以IEnumerable形式返回完整的结果。
否则,您将在DB上进行额外的访问。
是的
https://stackoverflow.com/questions/12237138
复制相似问题