看完後:http://forums.devart.com/viewtopic.php?f=31&t=22425&p=74949&hilit=IQueryable#p74949 看起來我應該用IQueryable
來判斷一個實體的子表是否有記錄。查看實體的子表是否包含任何記錄的最快方法
我最初的嘗試是這樣的: Ace.DirDs.Any();
這行代碼(或類似的代碼行)可能會運行數百次,並導致巨大的性能問題。
所以從閱讀以前的帖子在上面的鏈接,我想我會嘗試這樣的:
IQueryable<DirD> dddd = CurrentContext.DirDs
.Where(d => d.AceConfigModelID == ace.ID).Take(1);
bool hasAChild = dddd.Any();
會不會有更好的辦法?
我遇到了性能問題。上面的代碼可以運行數百次。在我以前的代碼中(在我發佈的代碼之前),我發現我創建了一個IEnumerable,並將數千條記錄加載到內存中,然後查看是否存在。你的代碼是否阻止了這種情況發生? – ashlar64
您需要確保您擊中了IQueryable而不是IEnumerable。 IEnumerable將導致工作在內存中完成,而不是在數據源上完成。 – Shoe
我們需要看看'CurrentContext.DirDs'是什麼類型。 –