2016-09-12 6 views
0

У меня есть 3 модели, которые почти содержат аналогичные данные. Теперь я хочу создать новую модель со свойствами из трех моделей. Я это сделал. Но проблема, с которой я столкнулась, заключается в том, что я теряю данные в трех таблицах, когда применяю миграцию.Объединение моделей в один с копированием данных с использованием Entity Framework 6.1

Я хочу скопировать данные из трех таблиц в новую таблицу, когда применяю миграцию к базе данных. Метод семян запускается после применения миграции, к тому времени все 3 таблицы будут удалены. Я хочу иметь некоторый метод, который выполняется перед применением миграции и сохраняет данные в некоторой временной таблице и выталкивает данные этой таблицы в новую таблицу и удаляет временную таблицу.

Есть ли способ, которым мы можем достичь этого с помощью Entity Framework или мне нужно явно это обработать?

Мои модели классов:

public class Model1 { 
    public Guid Id {get;set;} 

    public int Count {get;set;} 

    public bool IsActive {get;set;} 

    public string Template {get;set;} 
} 

public class Model2 { 
    public Guid Id {get;set;} 

    public int Count {get;set;} 

    public string Template {get;set;} 
} 

public class Model3 { 
    public Guid Id {get;set;} 

    public int Count {get;set;} 

    public string Template {get;set;} 
} 

public class NewModel{ 
    public Guid Id {get;set;} 

    public int Count {get;set;} 

    public string Template {get;set;} 

    public bool IsActive {get;set;} 

    public string Type {get;set; } // this will the type of all 3 old models 
} 
+0

Миграции не удалять таблицы при правильной настройке. Вам необходимо настроить базовую миграцию с вашими исходными 3 таблицами (add-migration Initial -IgnoreChanges), применить эту миграцию (update-database), затем добавить таблицу и новую миграцию. Затем вы можете просто использовать семя переноса для перемещения данных. –

ответ

0

Вы должны сделать это вручную, редактирование сгенерированной миграции с помощью Sql («выберите в ЕСС»)