如何在 Entity Framework Core 中以编程方式使用迁移

6 entity-framework entity-framework-core .net-core asp.net-core entity-framework-migrations

所以我想以编程方式使用迁移,为此我做了这样的事情。

Seed 是我通过 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(); 
            }
        }
Run Code Online (Sandbox Code Playgroud)

如果我运行时数据库不存在

添加迁移初始

一切都很好(这仅适用于我的第一次迁移)

如果我决定添加新的迁移

Add-Migration Add_Student_FirstName

学生中的一个新字段然后我得到这个 PMC 异常

数据库中已经有一个名为“SomeTableName”的对象。

控制台抱怨的 SomeTableName 不一定是我添加更改的表。

但是,如果我进入我的代码并注释该行

 Database.Migrate(); ///=> apply migrations
Run Code Online (Sandbox Code Playgroud)

并再次运行

Add-Migration Add_Student_FirstName

一切都很好(我的迁移已添加到 Migrations 文件夹,但我仍然必须使用

更新数据库

命令)

那么我正在做的事情有什么问题,我应该如何解决这个问题,以便在我创建迁移时自动应用它?

谢谢