我要更新在表中创建的新列,如下所示:
public partial class PortDealerTokens : DbMigration
{
public override void Up()
{
IEnumerable<DealerAdapter> dealers;
using (var context = new TestDriveContext())
{
dealers = context.Dealers.ToList();
}
foreach (var dealer in dealers)
{
using (var newContext = new TestDriveContext())
{
dealer.Token = < MyFunction >;
newContext.SaveChanges();
}
}
}
public override void Down()
{
}
}
此代码不起作用,因为当我调用Update-Database时,出现错误,提示无法在对象'dbo .__ MigrationHistory'中插入重复键。重复的键值为(201812180729383_PortDealerTokens。
如何解决此问题?有更好的策略吗?
答案 0 :(得分:0)
您可以使用override seed method进行操作
或通过迁移类中的Sql
方法
public partial class PortDealerTokens : DbMigration
{
public override void Up()
{
//Sql script to populate your data
Sql("");
}
public override void Down()
{
}
}
更新
但是,当您运行update-database命令时,无论是否进行了新迁移,种子方法都会运行 在这张图片中
1-add-migration'迁移名称'-添加新的空迁移
2-更新数据库-应用此迁移,然后运行“种子”方法
3-updata数据库-没有待处理的显式迁移,然后运行“种子”方法。