所以我想以编程方式使用迁移,为此,我已经做了类似的事情。
种子是我通过StoreContext创建的扩展方法
StoreContext是我的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_Student_FirstName
学生中的一个新字段,然后我收到此PMC异常
数据库中已经有一个名为“ SomeTableName”的对象。
控制台抱怨的SomeTableName不一定是我添加了更改的表。
但是,如果我进入代码并对
行进行注释 Database.Migrate(); ///=> apply migrations
然后再次运行
添加迁移Add_Student_FirstName
一切都很好(我的迁移已添加到“迁移”文件夹中,但是我仍然必须使用
手动进行迁移)更新数据库
命令)
那么我在做什么错了,我应该如何解决这个问题,以便在创建迁移时自动应用迁移?
谢谢
答案 0 :(得分:-1)
您可以在Database.Migrate()
中使用Startup.cs
方法。
为此,您可以像这样在startup.cs
中使用数据库上下文
using (var dbContext = new DbContext(...))
{
dbContext.Database.Migrate();
}