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