entity-framework - EF5 Code First 迁移中的程序化数据转换

标签 entity-framework entity-framework-5 database-migration entity-framework-migrations

是否可以在 Entity Framework 5 Code First 迁移中进行任何类型的程序化数据转换?

有一个 Sql() 方法来执行查询,但它的返回类型为 void,我看不到任何方法来获取我执行的查询的结果。

示例

我有一个表 RecipeIngredient 具有一对多关系。由于各种原因,我想将其转换为 Ingredients JSON 字符串属性。我能想到的唯一方法是这样的:

  • 创建新列IngredientsJson
  • 对于每个食谱,查询其成分,以编程方式构建一个 JSON 字符串并插入到新列中。
  • 放弃旧表成分

最佳答案

您应该根据需要使用 db 'initializer' - 和/或某种类型的 'Seed'(关于在何处注入(inject) EF 流)。

您可以 > take a look at this post with a customized < initializer - 同时执行 Db Create... 和 Migrate。它不是剪切和粘贴解决方案,但大部分都有效(它只是快速解决问题,您需要稍微调整一下,它在下面有几个修复)。

MigrateDatabaseToLatestVersion 仅包含迁移部分 - 并且您需要 seed - 暴露 - 或手动包装该部分(重点是针对不同情况完成的“检查” - 即何时“参与”迁移 - 或播种)。

迁移应该先行,数据库“创建”没有多大意义,除了播种。

您覆盖 Seed(您创建的)以将任何数据库处理放在那里 - 您有 DbContext 公开 - 您还可以调用 SqlQuery如果需要的话。


How to create initializer to create and migrate mysql database?

关于entity-framework - EF5 Code First 迁移中的程序化数据转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865767/

相关文章:

c# - 使用 LINQ 连接后获取特定对象

c# - 高效删除多条记录

c# - 在 Entity Framework 中合并

c# - 在子查询中涉及计数的高效查询

mysql - 将数据从 MySQL 迁移到 SQL Server

c# - 在数据库中存储数组的最佳方式

entity-framework - Entity Framework - 没有配置的数据库优先

c# - 升级到 EF6 破坏了 Azure 的通用提供程序 session 状态

java - 使用R2DBC进行数据库迁移

postgresql - TypeORM 迁移 :generate working great except for DROP