Недавно я обновил приложение с LINQ to SQL и SQL Server CE 3.5 до Entity Framework 4.1 Code First и SQL Server CE 4.0, и теперь оно работает заметно медленнее.Я делал некоторые до и после тестирования секундомера, и большинство основных операций моего приложения в среднем работают примерно на 40% медленнее.
Я использую все стратегии и конфигурации по умолчанию для EF Code First, за исключением отключениякаскадное удаление.
Когда я первоначально разместил этот вопрос, я сосредоточился на одном запросе, который, казалось, занимал особенно много времени, но с тех пор я понял, что он был особенно медленным при первом запуске (см. ветку комментариев).ниже).
Теперь я думаю, что большинство запросов выполняется медленнее - не сильно медленнее, но достаточно медленно, чтобы быстро сложиться, поскольку большинство операций, выполняемых приложением, включают несколько запросов.
Это приложение имеет очень маленькую базу данных.Файл SQL CE (.sdf) занимает всего 458 КБ, а в самой большой таблице содержится менее 250 записей.
Вот пример класса POCO:
public class Target
{
public int Id { get; set; }
public int TrialDefinitionId { get; set; }
public int Number { get; set; }
public int X { get; set; }
public int Y { get; set; }
public string Phase { get; set; }
public virtual TrialDefinition TrialDefinition { get; set; }
}
Все мои классы следуют этому основномушаблон (простые типы + виртуальные свойства для получения объектов, связанных внешними ключами).У меня есть один класс, который использует ICollection
для получения списка для отношения многие-к-одному.
Последнее замечание: я использую шаблон репозитория в качестве посредника, и каждое использование репозитория являетсяпомещен в блок using
.Для операций «get» это приводит к отсоединению сущностей после получения необходимых данных из базы данных.
У кого-нибудь есть какие-либо конкретные стратегии для повышения производительности моего приложения EF Code First?? Пожалуйста, имейте в виду, что у меня еще не было возможности подробно ознакомиться с EF.В основном я просто пытаюсь максимально быстро и безболезненно перейти с LINQ на SQL на EF.Самый полезный ответ для меня будет один, который состоит в изменении конкретных стратегий или конфигураций или других параметров.