gpt4 book ai didi

c# - EF 迁移 - 在迁移期间使用 C# 业务逻辑修改现有数据

转载 作者:太空狗 更新时间:2023-10-30 01:33:39 24 4
gpt4 key购买 nike

作为迁移的一部分,我需要修改列中的一些现有数据,但此更新必须使用 C# 代码进行转换:数据必须读入 C#、修改,然后推回数据库。

这些更改只能在此次迁移期间发生一次。 (因此,在 Seed 方法中有条件地应用此数据更新将不起作用,即使我检查了 MigrationHistory 表,因为一次可以应用多个迁移,并且此更新不会在以后的迁移之后发生。)

我无法在迁移期间使用纯 ADO.NET,因为 Up() 方法仅构建框架稍后将执行的操作,并且此修改依赖于模式迁移本身的变化。 (即: Vanilla ADO.NET 调用会过早发生。)

我觉得实现这一目标的最理想方法是在框架的实际脚本执行期间有条件地注入(inject)我们的 BL 的工具,但 afaik 没有提供这个扩展点。

最佳答案

I'm unable to using plain ADO.NET during the migration because the Up() method merely builds up the operations that the framework will execute at a later time, and this modification relies on schema changes in the migration itself. (ie: the vanilla ADO.NET calls would happen prematurely.)

创建两个迁移。

第一个执行架构更改。

第二个以空迁移开始。您编辑 Up() 方法以执行修改数据所需的所有 C# 代码。如果适用,请提供匹配的 Down() 方法。

请注意,您可以通过编辑第一个迁移并将数据转换代码放在 Up() 方法的末尾,在一次迁移中完成所有这些操作,以及 Down() 方法开头的反转(如果适用)。我发现单独的迁移更干净。

These changes must only happen once and only during this migration

这是由迁移机制保证的。迁移按顺序应用,只有未应用到目标数据库的迁移才会运行。

关于c# - EF 迁移 - 在迁移期间使用 C# 业务逻辑修改现有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33110302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com