Как создать базу данных с помощью первых миграций кода?
у меня ASP.NET проект MVC 3, использующий Entity Framwork 4.3 и его миграции. Теперь я хочу, чтобы Entity Framework создала базу данных для меня, используя миграции, которые у меня уже есть. Когда я пытаюсь запустить скрипт Update-Database, он дает мне следующее:
Update-Database -Verbose -ProjectName AssemblyWithMigrations -StartUpProjectName WebProjectAssembly
No migrations configuration type was found in the assembly '/* my name of assembly */'. (In Visual Studio you can use the Enable-Migrations command from Package Manager Console to add a migrations configuration).
но, когда я пытаюсь запустить Enable-Migrations
Я вижу следующее:
Migrations have already been enabled in project 'AssemblyWithMigrations '. To overwrite the existing migrations configuration, use the -Force parameter.
Итак, проблема в том, что EF пытается решить текущую версию миграции для обновления базы данных, я полагаю. Но базы данных не существует, и она, очевидно, терпит неудачу.
вопрос: как использовать миграции EF для создания базы данных, если она не существует? Или, Как правильно это сделать с помощью консоли Nuget?
в резюме, что я хочу:
1. выполнить команду (возможно update-database
), который создаст базу данных с помощью my web.конфигурационный файл
2. все миграции будут применяться к созданной базе данных в порядке их создания.
спасибо. :)
2 ответов
Я понимаю, что это старый вопрос, но какого черта....
чтобы включить миграции для создания начальной базы данных, я нашел следующие работы хорошо.
- удалите базу данных из Обозревателя объектов SQL Server
- удалите все существующие миграции из папки миграции.
-
в консоли управления пакетами введите "Add-Migration InitialCreate"
[опционально, в зависимости от вашего инициализатор базы данных]
- в пакете-управление-консоль типа "обновление-база данных"
Это даст вам один скрипт миграции, который перенесет вас из "нет базы данных" в базу данных, соответствующую вашей текущей модели.
использование миграций очень полезно, но иногда я обнаружил, что лучше использовать следующие операторы при работе с базами данных.
стратегии инициализации базы данных: используйте любые комментарии, относящиеся к вам.
public DataContext(): base("DefaultConnection")
{
// Database.SetInitializer<DataContext>(new CreateDatabaseIfModelChanges<DataContext>());
// Database.SetInitializer<DataContext>(new CreateDatabaseIfNotExists<DataContext>());
// Database.SetInitializer<DataContext>(new DropCreateDatabaseAlways<DataContext>());
}