entity-framework - 我应该如何编写转换数据的 Entity Framework 迁移(最好使用 DbContext)?

标签 entity-framework ef-code-first entity-framework-migrations

假设我的对象有一个 Name 字段,我希望将其拆分为 FirstName 和 LastName 字段。或者它可能有一个地址字符串,我正在添加需要地理编码的 Lat 和 Lng 字段。等等等等。

我希望可以在 Up() 和 Down() 方法中访问我的 DbContext,但我能找到的所有(除了内置函数)是 .Sql() 调用。这足以添加和删除列,但不足以将现有数据转换为新格式。

在 Up() 调用中引用我的 DbContext 是否安全?或者是否有另一种推荐的模式来实现需要的不仅仅是简单的 SQL 的迁移?

最佳答案

不,您不能使用 DbContextUp方法,因为它已经引用了新模型,但您的数据库仍以旧模型为目标。

编辑:

所有数据迁移必须通过 Sql 完成.例如,您可以创建临时表,将旧数据移动到临时表,使用表结构迁移并将数据从临时表移回原始表,并直接在 SQL 中使用一些转换 - 拆分 varchar 值应该没什么大不了的。

关于entity-framework - 我应该如何编写转换数据的 Entity Framework 迁移(最好使用 DbContext)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12593553/

相关文章:

sql-server - 解释死锁并修复它

c# - 通过 Entity Framework 将数组/表传递给存储过程

c# - EF Core DbUpdateConcurrencyException 未按预期工作

c# - 如何在 Entity Framework 6 中禁用模型缓存(代码优先方法)

entity-framework - 将复杂类型转换为实体而不丢失数据

使用 Entity Framework 和异步方法的 C# 集成测试

c# - 集成测试 EF5(或 EF4x)

c# - MigrationHistory 表中的模型列是什么?

c# - EF 6 - 代码第一个无效的一对一外键关系

entity-framework - Code First迁移的命名约定