是否可以在 Entity Framework 5 Code First 迁移中进行任何类型的程序化数据转换?
有一个 Sql() 方法来执行查询,但它的返回类型为 void,我看不到任何方法来获取我执行的查询的结果。
示例
我有一个表 Recipe 与 Ingredient 具有一对多关系。由于各种原因,我想将其转换为 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/