在Entity Framework迁移期间使用c#转换数据

时间:2016-01-23 21:28:53

标签: c# entity-framework database-migration

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

目前,我有一个名为Content的{​​{1}}类型的列。我希望将其替换为nvarchar类型ContentBinary的列,复制流程中每行的内容,同时转换内容。

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

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

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

我认为这可能需要作为迁移事务的一部分来实现一致性,但也因为迁移之前只存在ContentBinary,之后才会存在Content。我假设在迁移期间排除了打开单独的数据库连接的规则。但是,如果有办法访问用于迁移事务的连接,那么这可能就足够了。

1 个答案:

答案 0 :(得分:0)

您可以使用AddOrUpdate方法 如下

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

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

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