想象一下这种情况:
namespace SC.BL.Domain
{
public class User
{
public String Name { get; set; }
public String Adress { get; set; }
public int PhoneNumber { get; set; }
public char Gender { get; set; }
}
}
启用EF代码首次迁移。我使用“enable-migrations”
实现了基于代码的迁移我的 DbInitializer 设置为使用 MigrateDatabaseToLatestVersion 初始值设定项
现在我的问题是,我想将一个属性迁移到多个属性,而不会丢失数据,之后可能会删除旧属性!
假设我的数据库中有以下内容,
名称:User1
地址:Emmalaan 2,Gelderland
PhoneNumber:0471250950
性别:M
现在我想将我的User类更改为以下内容:
namespace SC.BL.Domain
{
public class User
{
public String Name { get; set; }
public String StreetName { get; set; }
public int HouseNumber { get; set; }
public String City { get; set; }
public int PhoneNumber { get; set; }
public char Gender { get; set; }
}
}
所以现在我想要在迁移之后,更改数据库中的数据(没有dataloss)并放入正确的属性。 我可以在哪里让迁移者做这样的事情?
名称:User1
街道名称:Emmalaan 2HouseNumber:2
城市:海尔德兰
PhoneNumber:0471250950
性别:M
这可以通过迁移实现吗?这是怎么做到的?
答案 0 :(得分:1)
我认为你唯一能做的就是编辑生成的迁移来进行你想要的转换。
迁移内部的 Up()方法:
中向上()的反转。
答案 1 :(得分:0)
我不认为通过迁移可以做到这一点。您希望更改表的结构,并且希望该迁移自动将不同列中的数据分开。我认为这是不可能的。我认为更好的方法是仅通过迁移添加列,然后您可以创建SQL过程以将数据拆分和更新到不同的列。