【发布时间】:2014-08-22 00:08:57
【问题描述】:
我有一个包含一定数量数据的现有数据库(即数据库不为空)。现在我决定加密一些敏感数据。我有一个专栏TemplateBlocks : string。我将用新列 TemplateBlocksEnc : byte[] 替换它,并且我确实正确地更改了我的 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() { /* ... */ }
}
当然,我不打算丢失任何现有数据,我需要从旧列中读取所有数据,对其进行加密,存储到新创建的列中,然后才能删除旧列。
有可能吗?我想我需要以某种方式获取当前的连接/事务,但我不知道如何进行。
【问题讨论】:
标签: .net entity-framework ef-code-first database-migration entity-framework-migrations