2017-02-20 9 views
2

У меня возникла проблема с отображением в Entity Framework. Первоначально Моя модель похожаПроблема с привязкой ядра Core Enity

public class Model1 
{ 
    public string[] Fields 
    { get; set; } 
} 

так, что данные, сохраненные в БД, как [ «data1», «data2»]. Теперь согласно новому требованию моя модель изменилась ниже:

public class Model1 
{ 
public Model2[] Fields 
     { 
      get; 
      set; 
     } 
} 

public class Model2 
{ 
public string prop1 {get;set;} 
public string prop2 {get;set;} 
} 

Для новой реализации новая экономия работает нормально. Но для существующих записей при извлечении проблемы с типом получения данных.

Невозможно преобразовать массив строк в массив model2.

Как я могу решить проблему?

+0

Это может быть невозможно с кодом первой, я думаю, вам нужно перенести старые данные первой в новой схеме на уровне БД –

+0

Спасибо за ответ. Но это уже в производстве, поэтому я не могу вносить изменения во всех БД. Ожидание только кодового решения. – Bhimisetty

+0

Является ли ваша новая модель уже в производстве? Можете ли вы запустить миграцию в процессе производства? –

ответ

0

Хорошо. Вы должны сохранить тот же объект для Model1, но только при добавлении добытчиков:

public class Model1 
{ 
    public string[] Fields { get; set; } 

    public string prop1 { get { return Field[0]; } } 
    public string prop2 { get { return Field[1]; } } 
} 

Затем вы можете создать метод только для миграции цели, где вы запрашиваете все данные Model1, вы переводите их в model2 и вашем сохранить их. Это выглядит следующим образом:

using (var context = new YourContext()) 
{ 
    foreach(var model1 in context.SetModel1) 
    { 
     context.SetModel2.Add(
      new Model2() { prop1 = model1.prop1, prop2 = model1.prop2 } 
     ); 
    } 
    context.SaveChanges(); 
} 
Смежные вопросы