Visual Studio Ultimate 2013 аварийно завершает работу при использовании Entity Framework Power Tools Beta 4

Я использую VS Ultimate 2013 на компьютере с Windows 8.1 и успешно работаю уже несколько месяцев. Однако сегодня я только что установил пакет NuGet для Entity Framework Power Tools Beta 4, и у меня возникли проблемы. После установки EFPT я перезапустил VS, загрузил свое решение, сделал мой проект "data" стартовым проектом, щелкнул правой кнопкой мыши по моему классу, производному от DbContext -> Entity Framework -> Generate Views. Visual Studio полностью вылетает и перезапускается. Я попытался щелкнуть другие параметры в контекстном меню EFPT, например "Просмотреть модель данных объекта (только для чтения)", и все они приводили к полному сбою и перезапуску VS.

Я работал под управлением VS с обновлением 3, поэтому я установил обновление 4 и все тот же вопрос. Он НЕ вылетает при запуске devenv.exe в безопасном режиме, но EFPT на самом деле тоже ничего не делает.

Итак, теперь я использую VS версии 12.0.31101.00 с обновлением 4, с.NET Fx 4.5.51641 и Entity Framework 6.1.2.

В конечном счете, я пытаюсь создать файл отображения EDM для моего первого контекста EF-контекста, чтобы кэшировать и сократить время запуска. Если эта проблема у меня есть известная проблема, есть ли исправление ИЛИ обходной путь в создании этого сопоставления???

1 ответ

Решение

Спасибо, Эрик. Я хотел ответить на свой вопрос, потому что смог сделать еще один шаг вперед. Вместо написания (LOT) кода для генерации кэшированных представлений и необходимости запускать его каждый раз, когда ваш код изменяется.

Разработчик команды SignalR в Microsoft Павел Кадлучка (Pawel Kadluczka) написал приятный и простой в использовании фрагмент кода, который можно установить через NuGet. Проект "Интерактивные предварительно созданные представления" при добавлении в сборку данных будет искать кэшированные представления и, если они не найдены, генерировать их на лету. Из коробки он поддерживает как информацию о файлах, так и данные, сохраненные в БД.

Единственный фрагмент кода, который я должен был добавить, чтобы использовать это, был:

static DynamicDbContext()
    {
        InteractiveViews.SetViewCacheFactory(new DynamicDbContext(), new FileViewCacheFactory(_SCRIPT_DIRECTORY + "dbviews.xml"));
    }

Мне буквально потребовалось 5 минут, чтобы установить, написать кусочек кода, выполнить и подтвердить.

Он должен быть запущен до выполнения любого запроса с вашим dbcontext, и поэтому он рекомендует поместить этот бит кода в статический ctor вашего пользовательского dbContext.

Сообщение в блоге Павла, где он описывает это: http://blog.3d-logic.com/2013/12/14/using-pre-generated-views-without-having-to-pre-generate-views-ef6/

Вы можете установить через NuGet или узнать больше об этом на CodePlex: https://efinteractiveviews.codeplex.com/

Другие вопросы по тегам