У меня есть приложение, которое построено с помощью Entity Framework. Объекты имеют свойства навигации virtual
, что означает ленивую загрузку. Однако все работает, но я заметил проблему с производительностью.Entity Framework на SQL Server CE - ленивая, с нетерпением загрузки, соображения производительности
Ленивая загрузка некоторых свойств вызывает несколько запросов к базе данных. например если я .Where(...)
на коллекции из 10 элементов - он будет генерировать 10 дополнительных вызовов в базу данных. Предположим, что SQL time
на этих 10 вызовах составляет в общей сложности 20 мс. Но общее время, необходимое для завершения запроса, намного выше.
Если я с нетерпением загружаю .Include(...)
, я вижу аналогичный SQL time
(т. Е. 20 мс), но операция выполняется намного быстрее.
Я еще не запускал 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, два сценарий (нетерпеливый против отложенной загрузки) дает такую же производительность.
Спасибо за ваш ответ, это приложение для рабочего стола WPF. –
Тот же код применяется, просто назовите его из App_Startup в WPF – ErikEJ