我有一個使用Entity Framework構建的應用程序。實體具有導航屬性virtual
,這意味着延遲加載。一切正常,但是,我注意到性能問題。SQL Server CE上的實體框架 - 懶惰vs渴望加載,性能考慮
某些屬性的延遲加載會導致對數據庫的多個查詢。例如如果我.Where(...)
對10個項目的集合 - 它將生成10個額外的數據庫調用。假設這10個電話上的SQL time
總共爲20ms。但是完成查詢所需的總時間要高得多。
如果我急於加載.Include(...)
,我看到類似的SQL time
(即20ms),但操作完成得快得多。
我還沒有運行Profiler,但我懷疑瓶頸是打開和關閉SQL Server CE數據庫或其他類似的「基礎架構」操作。
我真的想使用懶加載,它使我的代碼更簡單。有沒有什麼辦法可以優化SQL Server CE連接,或者我有什麼辦法可以提高SQL Server CE的性能?
我的連接字符串現在
<add name="dataRepositoryConnection"
connectionString="Data Source=|DataDirectory|XXX.sdf"
providerName="System.Data.SqlServerCe.4.0" />
我這個問題真的縮小到SQL CE,因爲當針對SQL Server運行,這兩種情況(渴望VS懶加載)提供相同的性能。
感謝您的回覆,它是一個WPF桌面應用程序。 –
應用相同的代碼,只需從WPF中的App_Startup調用它即可 – ErikEJ