Entity Framework Code Первые миграции данных не работают с VS2012 Web Deploy
Я создал приложение MVC 3.0 с использованием Visual Studio 2012, .NET 4.5 и Entity Framework 5.0.
Используя Code First Migrations, я могу правильно распространять изменения модели в моей локальной тестовой базе данных, но я не могу понять, как заставить это работать при развертывании на моих промежуточных и рабочих серверах с помощью Web Deploy.
Я прочитал следующую статью...
http://msdn.microsoft.com/en-us/library/dd394698(v=vs.110)#dbdacfx
... который объясняет, что должно произойти, но это не работает для меня, поскольку Web Deploy, кажется, не может обнаружить, что я использую Entity Framework. В учебном пособии показан флажок для включения выполнения Code First Migrations...
... но мой диалог показывает только Update Database
флажок для каждой базы данных.
Я прочитал, что для того, чтобы Visual Studio обнаружил использование контекста Entity Framework, Web.config
должен включать элемент, который его определяет. Вот мой:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<contexts>
<context type="MyContext, MyAssembly">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyContext, MyAssembly], [MyConfig, MyAssembly]], EntityFramework">
<parameters>
<parameter value="MyConnectionStringName"/>
</parameters>
</databaseInitializer>
</context>
</contexts>
</entityFramework>
Любые предложения будут ценны.
Спасибо,
Тим
2 ответа
Я нашел решение этой проблемы с помощью экспериментов.
Фактически, мое приложение MVC было создано VS2012 путем преобразования из решения VS2010. Поскольку процесс преобразования не сообщал о каких-либо проблемах, я предположил, что он правильно преобразовал все, включая профили публикации.
Однако я обнаружил, что проблема заключалась в преобразовании этих профилей, и, если я не отредактирую их XML-файлы вручную, очевидно, нет способа заставить старые импортированные профили участвовать в Code First Migrations.
Простое создание новых профилей публикации в преобразованном решении приводит к ожидаемому поведению.
Попробуйте это: Enable-Migrations -Force
Убедитесь, что ниже установлено значение true AutomaticMigrationsEnabled = true;
Переиздать - у меня сработало