我有一个具有一定数据量(即DB不为空)的现有数据库。现在我决定加密一些敏感数据。我有一列TemplateBlocks : string。我将用新的列TemplateBlocksEnc : byte[]替换它,并且确实更改了我的Code First模型。然后,我产生了迁移并卡住了!在EF Code First迁移中使用自定义逻辑
public partial class EncryptTemplateBlocks : DbMigration
{
public override void Up()
{
AddColumn("dbo.Devices", "TemplateBlocksEnc", c => c.Binary(nullable: true));
// TODO: read TemplateBlocks data, encrypt, save to new column
AlterColumn("dbo.Devices", "TemplateBlocksEnc", c => c.Binary(nullable: false));
DropColumn("dbo.Devices", "TemplateBlocks");
}
public override void Down() { /* ... */ }
}
当然,我不打算失去任何现有的数据,我需要阅读从旧列的所有数据,对其进行加密,存储到新创建的列才把我可以删除旧列。
可能吗?我想我需要以某种方式获得当前的连接/事务,但我不知道如何做到这一点。
2014-07-01
ie.