我有一个包含 TimeSpan 类型属性的实体。我们决定将属性从TimeSpan更改为Int(分钟)。我的想法现在迁移此更改如下:
从旧列 (TimeSpan) 中检索每个条目并将其转换为分钟 (Int) 并将其添加到新创建的列中。
在哪里/什么是最好的方法?我应该用种子方法吗?!我认为,这是不可能的,因为Seed
在迁移完成后调用。
方法中的第二种Up()
方法。这是一个好主意吗?在 Up 方法中将列数据复制/转换为另一列。
public partial class V30 : DbMigration
{
public override void Up()
{
AddColumn("dbo.Plexes", "ISingleIsValidTimeInMinutes", c => c.Int(nullable: false));
// I NEED HERE TO TRANSFER THE DATA FROM ISingleIsValidTime TO ISingleIsValidTimeInMinutes ?!!!
TransformISingleIsValidTimeToInt();
DropColumn("dbo.Plexes", "ISingleIsValidTime");
}
....
}
private void TransformISingleIsValidTimeToInt()
{
// HERE CONVERTING LOGIC I NEED THE EXISITNG DATA FROM DBCONTEXT!!
}
public class NoMagicDatabaseConfiguration : DbMigrationsConfiguration<ApplicationDbContext>
{
public NoMagicDatabaseConfiguration()
{
this.AutomaticMigrationsEnabled = false;
this.AutomaticMigrationDataLossAllowed = false;
}
protected override void Seed(ApplicationDbContext context)
{
base.Seed(context);
}
}