[英]LINQ to Dynamics CRM query optimisation
我正在使用鏈接到Dynamics CRM Online的網站。 我對這兩者都不熟悉,但找到最好的學習方法就是讓自己承受壓力。
無論如何,我有使用LinqPad構建的以下LINQ查詢:
from m in py3_membershipSet
join c in ContactSet on m.py3_Member.Id equals c.ContactId
where m.statuscode.Value == 1
orderby m.py3_name
select m
但是,這會給出內存不足的異常。 如果我使用Take(100)它運行正常但我希望總共可以檢索大約1200個結果。 內存問題是否是LinqPad相關的問題,我不知道,但無論哪種方式,我假設上述查詢不是拉這些結果的最有效方法。
我真的可以幫助提高效率,如果它是通過LinqPad出現的內存耗費。
當沒有足夠的內存來繼續執行程序時拋出....
所以我認為你所編寫的Linq並沒有特別之處 - 除了它返回的數據多於客戶可以處理的數據。 我懷疑這是一個與客戶有關的問題,而不是CRM或Linq。
這可能與LinqPad有關(我自己沒用過),你試過從控制台應用程序運行該腳本(以排除任何LinqPad問題)嗎?
1200聽起來不像和可怕的數據,我經常檢索1000~記錄沒有問題,但我很高興檢索到更多(5000〜)。
分頁可能會避免這個問題; 使用LINQ的頁面大結果集 。
由於查詢不知道以后將需要哪些字段,因此當只在select子句中指定實體時,將從實體返回所有列。 要僅指定要使用的字段,必須在select子句中返回一個新對象,指定要使用的字段。
所以不是這樣的:
from m in py3_membershipSet
join c in ContactSet on m.py3_Member.Id equals c.ContactId
where m.statuscode.Value == 1
orderby m.py3_name
select m
用這個:
from m in py3_membershipSet
join c in ContactSet on m.py3_Member.Id equals c.ContactId
where m.statuscode.Value == 1
orderby m.py3_name
select new py3_membership()
{
py3_membershipid = m.py3_membershipid,
py3_name = m.py3_name
}
看看這篇文章的更多細節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.