EF 代码首次迁移 - 属性 迁移
EF Code First Migration - Property migration
想象一下这种情况:
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 初始化器
现在我的问题是,我想将一个 属性 迁移到多个属性中,而不会丢失数据,之后旧的 属性 可能会被删除!
假设我的数据库中有以下内容,
Name: User1
Address: Emmalaan 2, Gelderland
PhoneNumber: 0471250950
Gender: M
现在我想将我的用户 class 更改为以下内容:
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; }
}
}
所以现在我希望在迁移之后更改数据库中的数据(没有数据丢失)并放入正确的属性中。
我在哪里可以让迁移者做这样的事情?
Name: User1
StreetName: Emmalaan 2
HouseNumber: 2
City: Gelderland
PhoneNumber: 0471250950
Gender: M
这可以通过迁移实现吗?这是怎么做到的?
我认为这不可能通过迁移实现。您想要更改 table 的结构,并且您希望迁移自动将不同列中的数据分开。我认为这是不可能的。我认为更好的方法是仅通过迁移添加列,然后您可以创建 SQL 程序来将数据拆分和更新到不同的列。
我认为您唯一可以做的就是编辑生成的迁移以进行您想要的转换。
内部 Up() 迁移方法:
- 使用Sql()方法将数据写入临时table
- 将 table 迁移到新结构(使用生成的代码)
- 使用 Sql() 方法从临时 table 中获取所有数据(根据需要拆分),以便您可以填充已编辑的数据table
在 Down() 方法中 Up().
想象一下这种情况:
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 初始化器
现在我的问题是,我想将一个 属性 迁移到多个属性中,而不会丢失数据,之后旧的 属性 可能会被删除!
假设我的数据库中有以下内容,
Name: User1
Address: Emmalaan 2, Gelderland
PhoneNumber: 0471250950
Gender: M
现在我想将我的用户 class 更改为以下内容:
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; }
}
}
所以现在我希望在迁移之后更改数据库中的数据(没有数据丢失)并放入正确的属性中。 我在哪里可以让迁移者做这样的事情?
Name: User1
StreetName: Emmalaan 2
HouseNumber: 2
City: Gelderland
PhoneNumber: 0471250950
Gender: M
这可以通过迁移实现吗?这是怎么做到的?
我认为这不可能通过迁移实现。您想要更改 table 的结构,并且您希望迁移自动将不同列中的数据分开。我认为这是不可能的。我认为更好的方法是仅通过迁移添加列,然后您可以创建 SQL 程序来将数据拆分和更新到不同的列。
我认为您唯一可以做的就是编辑生成的迁移以进行您想要的转换。
内部 Up() 迁移方法:
- 使用Sql()方法将数据写入临时table
- 将 table 迁移到新结构(使用生成的代码)
- 使用 Sql() 方法从临时 table 中获取所有数据(根据需要拆分),以便您可以填充已编辑的数据table
在 Down() 方法中 Up().