эта тема уже широко обсуждается в stackoverflow и во многих других блогах, причина для того, чтобы задать вопрос, заключается в том, что я наблюдаю, что эта тема обсуждалась в основном в сообщениях от 3 до 5 лет, тогда как сейчас у нас есть версия EF 6.2, и я ожидаю, что это может иметьобновления (есть и другие причины, которые вы найдете в вопросе.
Мое приложение имеет как минимум 25 моделей (таблиц) с MySQL в качестве базы данных, модели и отношения настроены в OnModelCreating, веб-сайт размещен на godaddy, и яне имеют хорошего доступа к настройкам IIS и т. д.
Время загрузки страницы
- Загрузка первой страницы: от 65 до 70 секунд
- Загрузка второй страницы: от 1 до 3 секунд
После 10-минутной задержки загрузка страницы займет 70 секунд. Обратите внимание, что я тестировал ее в разных средах, например, при использовании другого подключения к Интернету. На странице нет ни одной фотографии, и тестовой страницыимеет только 5 строк данных с двумя столбцами (вызывая простой метод db.Test.ToList ();)
Пока sВ интернете я обнаружил, что это обычная проблема с EF, поэтому я попытался исправить ее, получая помощь от сообщений 3 шага для быстрого EntityFramework и Предварительно сгенерировать модель и кэш представления
После этого исправления
- Загрузка первой страницы: от 64 до 67 секунд
Загрузка второй страницы: от 1 до 3 секунд
// DbConfiguration constructor
public MyDbConfiguration
{
var path = Path.GetDirectoryName(this.GetType().Assembly.Location);
SetModelStore(new DefaultDbModelStore(path));
}
// DbContext
private static DbMappingViewCacheFactory viewCacheFactory;
private static DbMappingViewCacheFactory ViewCacheFactory
{
get
{
if (viewCacheFactory == null)
{
var path =ConfigurationManager.AppSettings[GlobalContextConfig.EFCacheFolder];
viewCacheFactory=new FileViewCacheFactory(path+"Budget.Context.MyDbContext.xml");
}
return viewCacheFactory;
}
}
public MyDbContext()
: base("name=MySqlConnectionString")
{
// In case i need to update xml for now i delete the old file manually
InteractiveViews.SetViewCacheFactory(this, ViewCacheFactory);
Database.SetInitializer<MyDbContext>(null);
this.Configuration.ProxyCreationEnabled = false;
this.Configuration.LazyLoadingEnabled = false;
this.Configuration.AutoDetectChangesEnabled = false;
this.Configuration.ValidateOnSaveEnabled = false;
}
Это было улучшено, но не достаточно, я хочу знать, были ли обновлены эти проблемы в EF 6.2.0 или изменился метод их исправления, или что-то, что я делаю неправильно / должен проверить.
Я также установилEF 6.1.X и сгенерированные представления, щелкнув правой кнопкой мыши файл Contaxt и выбрав Entity Framework> Generate View в руководстве
Результаты:
- Загрузка первой страницы: от 40 до 50 секунд
- Загрузка второй страницы: от 0 до 1,5 секунд
Это удивительно, EF 6.1.X намного быстрее, чем EF 6.2
Сборка и развертывание в виде пакета Release с debug = false
Для целей тестирования я также загрузил приложение asp.netбез Entity Framework загрузка в первый раз занимает от 8 до 13 секунд, а вторая загрузка занимает менее 1 секунды