在实体框架迁移期间使用 c# 转换数据

本文关键字:转换 数据 实体 框架 迁移 | 更新日期: 2023-09-27 18:31:39

是否可以

在实体优先数据库迁移期间使用 C# 中执行的计算来转换存储在列中的数据?

目前,我有一个名为 Contentnvarchar 类型的列。 我想用一个名为 ContentBinary 的类型 varbinary 的列替换它,复制过程中每一行的内容,但也转换内容。

具体来说,我想将字符串转换为 UTF-8 编码,然后对其进行压缩。

我知道 DbMigration 类允许使用 Sql*() 方法进行转换/数据移动,但这些方法似乎要求所有转换逻辑都在 SQL 中。我认为这需要将压缩逻辑复制为 SQL Server 中的存储过程,这将使所需的工作量加倍,并导致直接使用自定义 c# 压缩例程时可能出现不一致。

我希望能够遍历所有行,读取每个Content值,在 C# 中应用转换,然后将其写入 ContentBinary .

我认为这可能需要作为迁移事务的一部分进行,以确保一致性,但也因为在迁移之前只会存在Content,之后只会存在ContentBinary。我假设这排除了在迁移期间打开单独的数据库连接的可能性。但是,如果有一种方法可以访问用于迁移事务的连接,也许这就足够了。

在实体框架迁移期间使用 c# 转换数据

您可以使用AddOrUpdate方法。像下面这样

context.TableName.AddOrUpdate(x=> x.ID, collection);

其中集合是应用转换后的表本身

如果您在问题中提供了一些代码,我可能会更具体。