錯誤:無法多次枚舉查詢結果

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



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因