无法使用EF Code-First更新数据库

时间:2017-03-19 07:23:23

标签: asp.net-mvc ef-code-first ef-migrations

我正在使用EF代码优先迁移。我在模型中添加了一个新属性,但它没有反映为数据库中的列。

Configuration.cs

public Configuration()
{
    AutomaticMigrationsEnabled = true;
}

的Global.asax.cs

Database.SetInitializer(new MigrateDatabaseToLatestVersion<DbContext, DbMigrationsConfiguration<DbContext>>());

using (var context = new MyDbContext())
{
    context.Database.Initialize(true);
}

我已经尝试了update-database。它表示没有待定的迁移。

编辑:

我的EF是一个单独的类库项目。 还有另一个类库项目存储所有模型。 主(启动)项目是一个MVC项目。

我应该在哪里添加迁移?

此外,Add-Migrations Initial总是给我EMPTY Up()和Down()方法。

4 个答案:

答案 0 :(得分:1)

这对我有用,首先备份你的数据库然后删除项目中的migrations文件夹并删除数据库中的__MigrationHistory表 然后运行此命令

Enable-Migrations -EnableAutomaticMigrations -Force

然后添加迁移

Add-Migration InitialMigration

最后用

更新数据库
Update-Database

答案 1 :(得分:0)

详细可以解决这个问题。在包管理器控制台中运行

Update-Database –Verbose

答案 2 :(得分:0)

执行&#34;更新数据库&#34;命令你运行"Add-Migrations"? Add-Migrations命令将生成必要的迁移脚本以更新数据库。

另外,您的数据库中是否有_MigrationsHistory表?

您是否可以更新代码以指向MyDbContext而不是DbContext?我相信DbMigrationsConfiguration<DbContext>>()也应该指向你的dbcontext类型。

Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, DbMigrationsConfiguration<MyDbContext>>())

答案 3 :(得分:0)

*首先添加新模型:用户模型-id,fname,lname,adress,ect ...

*在您的Application db上下文中将新模型定义为新集合示例:  公共DbSet用户{get;组; }

*创建迁移:add-Migration YourMigrationName *更新数据库