«Для меня не имеет смысла использовать пользовательские запросы, тогда почему я использую Entity Framework?» Для скорости конечно! вы уничтожаете другой слой, сохраняя полезные объекты в коде. Больше о том, что нет необходимости писать валидацию и заполнять поля в объекте, разбирать строки и тому подобное.

ема уже широко обсуждается на stackoverflow и во многих других блогах. Причина, по которой я задаю этот вопрос, заключается в том, что я наблюдаю, что эта тема обсуждалась в основном в сообщениях от 3 до 5 лет, в то время как сейчас у нас есть версия EF 6.2, и я ожидаю, что в ней уже могут быть обновления ( Есть и другие причины, которые вы найдете под вопросом.

У моего приложения есть как минимум 25 моделей (таблиц) с MySQL в качестве базы данных, модели и отношения настроены в OnModelCreating, веб-сайт размещен на godaddy, и у меня нет хорошего доступа к настройкам IIS и т. Д.

Время загрузки страницы

Загрузка первой страницы: от 65 до 70 секундЗагрузка второй страницы: от 1 до 3 секунд

После 10-минутной задержки загрузка страницы займет 70 секунд. Обратите внимание, что я протестировал его в разных средах, например, с использованием другого подключения к Интернету. На странице нет изображений, и на тестовой странице есть только 5 строк данных с двумя столбцами (вызывая простой метод db.Test.ToList ();)

При поиске в интернете я обнаружил, что это общая проблема с 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 секунды.

Ответы на вопрос(2)

Ваш ответ на вопрос