2017-02-20 52 views
2

我正面臨着實體框架中的映射問題。最初我的模型就像Enity Framework核心映射問題

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

您的新模型是否已投入生產?你可以在生產中運行ef遷移嗎? –

回答

0

好的。你需要保持同樣的實體模型1,但只是增加干將:

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

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

然後你就可以只爲您獲取所有型號1的數據,將它們轉換成模型2和您保存遷移目的創建的方法。它看起來像:

using (var context = new YourContext()) 
{ 
    foreach(var model1 in context.SetModel1) 
    { 
     context.SetModel2.Add(
      new Model2() { prop1 = model1.prop1, prop2 = model1.prop2 } 
     ); 
    } 
    context.SaveChanges(); 
}