我试图迁移此模型:
public partial class Project
{
public virtual int Id { get; set; }
}
到这个模型:
public partial class Project
{
public virtual int Id { get; set; }
public virtual string CryptoId { get; set; }
}
运行Add-Migration
后,这就是我得到的:
public override void Up()
{
AddColumn("dbo.projects", "cryptoId", c => c.String());
}
我扩展到:
public override void Up()
{
AddColumn("dbo.projects", "cryptoId", c => c.String());
// Populate cryptoId
using (var db = new DbContext())
{
foreach (Project p in db.Projects)
{
Sql(string.Format
(
"UPDATE [dbo].[projects] SET [cryptoId] = '{0}' WHERE [id] = {1}",
new CryptoId(p.Id), p.Id
));
}
}
}
然而,这不起作用。当我运行Update-Database
时,我收到以下错误消息:
支持' DbContext'自创建数据库以来,上下文已发生变化。
错误显然正在发生,因为我尝试使用我的最新上下文访问过时的数据库,但我需要知道Project.Id
才能填充我的{ {1}}。
我该怎么做?
答案 0 :(得分:1)
您总是可以将此作为两个单独的迁移 - 一个用于处理架构,一个(架构现在与您的代码匹配)来处理数据的更改...