如何在迁移过程中使用功能?

时间:2014-10-21 15:24:11

标签: c# entity-framework model-view-controller ef-migrations

我试图迁移此模型:

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}}。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您总是可以将此作为两个单独的迁移 - 一个用于处理架构,一个(架构现在与您的代码匹配)来处理数据的更改...