Итак, я хочу использовать миграции программным способом, для этого я сделал что-то вроде этого.
Seed - это метод расширения, который я создал через StoreContext
StoreContext - этоmy DbContext
internal StoreContext(DbContextOptions options)
: base(options)
{
RelationalDatabaseCreator creator = this.GetService<IDatabaseCreator>() as RelationalDatabaseCreator;
if (!creator.Exists())
{
creator.Create(); ///=> create database
creator.CreateTables(); ///=> create database tables
}
Database.Migrate(); ///=> apply migrations
if (creator.Exists())
{
this.Seed();
}
}
Если база данных не существует, то когда я запустил
Add-Migration Initial
все хорошо (это толькодля моей первой миграции)
Если я решу добавить новую миграцию
Add-Migration Add_Student_FirstName
новое поле в Student, тогда я получу этот PMCисключение
В базе данных уже есть объект с именем SomeTableName.
SomeTableName, на который жалуется консоль, не обязательно является таблицей, к которой я добавилизменение.
Но если я войду в свой код и прокомментирую строку для
Database.Migrate(); ///=> apply migrations
и запустлю снова
Add -Student_FirstName
все снова хорошо (моя миграция добавлена в Migrно я все еще должен выполнить миграцию вручную, используя команду
Update-Database
)
Так что же не так в том, чтоЯ делаю, и как мне это исправить, чтобы миграция применялась автоматически при ее создании?
Спасибо