如何在迁移过程中使用函数
本文关键字:函数 过程中 迁移 | 更新日期: 2023-09-27 18:27:16
我正在尝试迁移此模型:
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
才能填充我的Project.CryptoId
。
我该怎么做?
您总是可以将其作为两个独立的迁移来完成——一个用于处理模式,另一个(模式现在与您的代码匹配)用于处理数据的更改。。。