实体框架核心未更新现有表

时间:2018-08-09 18:11:56

标签: c# entity-framework database-migration ef-migrations

我有一个使用EntityFramework Core的IdentityServer。 我使用代码优先方法。每次我想编辑数据库时,例如添加表或向现有表中添加更多列,我都只是在代码中执行这些更改,然后在程序包管理器控制台中使用命令创建迁移文件。 当我运行IdentityServer时,它具有执行迁移的以下代码。

GlobalConfig.DatabaseConnectionString = configuration.GetValue<string>("DatabaseConnectionString");

var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>().UseSqlServer(GlobalConfig.DatabaseConnectionString);

using (var context = new ApplicationDbContext(optionsBuilder.Options))
    {
        context.Database.Migrate();
    }

'ApplicationDbContext'只是扩展IdentityDbContext并实现IApplicationDbContext的类。

回到重点,

 context.Database.Migrate();

如果我创建新数据库,则应用新迁移,即使使用现有数据库,它也会应用新更改。

现在是发生问题的地方。如果删除迁移后刚添加的列或表,则如果再次运行该程序,它将不会再次执行更改。为什么这是一个问题?

我在本地计算机上运行迁移,它执行迁移并更新数据库,但是当有人提取(在我的情况下,我公司的质量保证)我的解决方案并运行该程序时,它不会在他们的计算机上执行迁移。

我想知道我在做什么错,或者这在EntityFramework中是否正常。

我希望EF可以先检查数据库,如果它与代码中指定的不相等,请应用更改...或类似的方法。

谢谢!

0 个答案:

没有答案