from d in Customers
select d;
此查詢每撥打一個電話號碼customerId
以獲取customerId = customerId的訂單。Linq查詢使所有調用帶來外鍵的表數據
這使得通話變得緩慢而漫長,我不想要訂單數據。如何禁用?
Addtional細節:
我做的條件
if (flag)
{
return (from d in Customers
select d).ToList();
}
else
{
return (from d in Customers
where d.Orders.Count > 10
select d).ToList();
}
即使它對我想,以防止這兩種情況下的每一個客戶的所有訂單調用,如果查詢。
這是不正確的陳述,因爲你不顯示真正的代碼很難告訴你實際問。你可以用真實的代碼替換它嗎? – 2011-03-11 21:39:01
閱讀David B所說的話,似乎我不應該在任何情況下訪問d.Orders,因爲它會在這種情況下對每個客戶進行愚蠢的調用。我應該加入?但那麼d.Orders的用法是什麼?如果這樣做會打這麼多電話,那麼這麼蹩腳的EF:D – WhoIsNinja 2011-03-11 21:46:29
您更新的查詢仍然不會顯示問題。如果'Customers'是'IQueryable',那麼'where'將在SQL中完成。如果它是'IEnumerable ',那麼它將在內存中完成。你隱藏了控制你所問的行爲的部分,但問題在於你的代碼,而不是LINQ to Entities。 –
2011-03-11 21:47:57