我不是任何方式的LINQ高級用戶,但可以在基本級別上摸索我的方式。我有一個關於LINQ如何表達它的查詢「策略」的問題。我會盡我所能解釋這一點,並通過記憶寫出一個非常愚蠢的例子。LINQ執行多個查詢而不是單個「已加入」查詢
我有一個包含多個數據庫視圖的數據模型。比方說,有意見一欄結構如下:
PersonView
PersonViewId | Surname | GivenName | OtherViewId
------------------------------------------------
奧瑟維尤查看
OtherViewId | PersonViewId | Name
---------------------------------
設置主鍵的視圖後(PersonView.PersonViewId/OtherView.OtherViewId)和設置適當的字段是非可變的,我創建一個PersonView.PersonViewId(父)與OtherView.PersonViewId(Child)之間的關聯。我將其設置爲「一對一」,並寫一些代碼來使用它:
StringBuilder s = new StringBuilder();
foreach(PersonView p in dc.PersonViews)
{
s.AppendLine(p.OtherViews.Name + "<br />");
}
注意到性能極差,我異型數據庫,發現它在foreach做一個查詢每個PersonView年代聲明。
此時我重新編寫了查詢,並用LINQ查詢中的JOIN替換了DBML中的關聯,對數據庫進行了概要分析,並且按預期查詢了數據庫,只查詢了一次。
我認爲這是與事實,然後數據庫實際上被查詢,但不知道該在哪裏調試。有人能指出我在這方面的正確方向,以幫助我提高使用關聯的性能,還是我堅持使用JOIN來完成我所需要的功能?
謝謝:)
您應該檢查由LINQ生成的代碼。 – 2011-04-11 21:15:39