我有代码优先生成的数据库。在其中我在表格中有一个bool列。此列需要更改为枚举。问题是表已经有数据,必须以某种方式转换。 是)我有的 bool IsA:是/否 我需要的 枚举MyEnum: A B C D 我需要转换IsA的值,以便真正映射到A和false映射到B. 我怎么能这样做?
答案 0 :(得分:2)
您可以尝试在迁移类中执行此操作:
public partial class fromBool2Enum : DbMigration
{
public override void Up()
{
//add new column:
AddColumn("dbo.MyTable", "IsA_TEMP", c => c.Int());
//transfer data to just created column
Sql("Update dbo.MyTable set IsA_TEMP = case when IsA then 0 else 1 end");
//0(i.e. A) and 1(i.e. B) is just example, correct it on your own, depending on enum's declaration
//Drop old column
DropColumn("dbo.MyTable", "IsA")
//Rename new column to initial name
Sql("EXEC sp_rename 'dbo.MyTable.IsA_TEMP', 'IsA', 'COLUMN'");
}
public override void Down()
{
//corresponding reverse code...
}
}