Enity Framework核心映射问题

时间:2017-02-20 11:18:14

标签: c# entity-framework-core

我正面临实体框架中的映射问题。最初我的模型就像

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

这样保存在db中的数据就像[" data1"," data2"]。现在根据新要求我的模型改变如下

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

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

对于新的实施,新的保存工作正常。但是对于现有记录在获取数据时获取类型转换问题。

无法将字符串数组转换为model2数组。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

好的。您需要为Model1保留相同的实体,但只需添加getter:

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();
}