簡體   English   中英

在實體框架中將布爾值更改為枚舉-首先編碼

[英]Changing a bool to an enum in Entity Framework - code first

我有代碼優先生成的數據庫。 在其中,我在表中有一個布爾列。 該列需要更改為枚舉。 問題是表已經有數據,必須以某種方式進行轉換。 我所擁有的IsA:是/否我需要枚舉MyEnum:A,B,C,DI需要轉換IsA的值,以便將true映射到A,將false映射到B。我該怎么做?

您可以嘗試在遷移類中執行此操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM