2016-09-12 3 views
0

У меня есть сгенерированная кодом база данных. В нем у меня столбец bool в таблице. Эта колонка должна быть изменена на перечисление. Проблема заключается в том, что в таблице уже есть данные, которые нужно каким-то образом преобразовать. Что я имею Его Isa: истина/ложь что мне нужно перечисление MyEnum: A, B, C, D мне нужно значение Исы конвертируется, так что истинные карты А и ложных карты к В. Как можно Я делаю это?Изменение bool на перечисление в Entity Framework - сначала код

+0

Она должна работать в автоматическом режиме. Просто измените тип свойства с bool на 'MyEnum' в вашей организации. Вы пробовали это? –

+0

Нет. Как он узнает, какое значение должно быть истинным и которое должно быть ложным? Кроме того, мне нужна колонка, чтобы иметь другое имя. – Shaggydog

+0

Вы должны установить значения элемента перечисления, соответствующие: 'MyEnum {A = 1, 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... 
    }  
} 
Смежные вопросы