在实体框架迁移期间使用 c# 转换数据
本文关键字:转换 数据 实体 框架 迁移 | 更新日期: 2023-09-27 18:31:39
是否可以
在实体优先数据库迁移期间使用 C# 中执行的计算来转换存储在列中的数据?
目前,我有一个名为 Content
的 nvarchar
类型的列。 我想用一个名为 ContentBinary
的类型 varbinary
的列替换它,复制过程中每一行的内容,但也转换内容。
具体来说,我想将字符串转换为 UTF-8 编码,然后对其进行压缩。
我知道 DbMigration 类允许使用 Sql*() 方法进行转换/数据移动,但这些方法似乎要求所有转换逻辑都在 SQL 中。我认为这需要将压缩逻辑复制为 SQL Server 中的存储过程,这将使所需的工作量加倍,并导致直接使用自定义 c# 压缩例程时可能出现不一致。
我希望能够遍历所有行,读取每个Content
值,在 C# 中应用转换,然后将其写入 ContentBinary
.
我认为这可能需要作为迁移事务的一部分进行,以确保一致性,但也因为在迁移之前只会存在Content
,之后只会存在ContentBinary
。我假设这排除了在迁移期间打开单独的数据库连接的可能性。但是,如果有一种方法可以访问用于迁移事务的连接,也许这就足够了。
您可以使用AddOrUpdate方法。像下面这样
context.TableName.AddOrUpdate(x=> x.ID, collection);
其中集合是应用转换后的表本身
如果您在问题中提供了一些代码,我可能会更具体。