编程语言
首页 > 编程语言> > EF迁移 – 在迁移期间使用C#业务逻辑修改现有数据

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

作者:互联网

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

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

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

我觉得实现这一目标的最理想方式是在框架的实际脚本执行期间有条件地注入我们的BL,但是没有提供这个可扩展性点.

解决方法:

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,migration,entity-framework,database-migration,code-first-migrations
来源: https://codeday.me/bug/20190628/1314647.html