错误:无法多次枚举查询结果

domainservices entity-framework

在以下代码中调用EF 4.0中的SP:

  public IQueryable<Employee> GetEmployeesByFollowup()
        {
            var results = from p in this.ObjectContext.SearchEmployeeFollowup()
                          select p;
            foreach (Employee p in results)
            {
                p.DepaermentReference.Load();                
            }
            return results.AsQueryable<Employee>();
        }

For循环中导致以下错误:

“查询的结果不能多次枚举。”} System.SystemException {System.InvalidOperationException}

它似乎在某个时候工作正常。不要理解为什么。

热门答案

从方法返回IQueryable仅在您想要在执行之前向查询(过滤器,投影,连接...)添加内容时才有用。但是由于你的方法使用foreach枚举了结果,所以当你返回它时,查询已经执行了,所以为它添加任何内容为时已晚......

也许你的方法应该返回一个IEnumerable<Employee>

    public IEnumerable<Employee> GetEmployeesByFollowup()
    {
        var results = this.ObjectContext.SearchEmployeeFollowup().ToList();
        foreach (Employee p in results)
        {
            p.DepaermentReference.Load();
        }
        return results;
    }

BTW,EF 4.0处理相关实体的延迟加载,因此您通常不必显式调用Load



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因