0
我有一個具有一定數據量(即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() { /* ... */ }
}
當然,我不打算失去任何現有的數據,我需要閱讀從舊列的所有數據,對其進行加密,存儲到新創建的列才把我可以刪除舊列。
可能嗎?我想我需要以某種方式獲得當前的連接/事務,但我不知道如何做到這一點。
AFAIK,標準SQL加密不適用於EF Code First。我的意思是我無法獲得已解密的模型,但需要通過SQL查詢解密每個值,這在我的情況中是不可接受的。看來,CLR UDF是唯一的方式......悲傷。 –
從來沒有讀過關於代碼第一和T-SQL加密。但是AFAIK,你可以在T-SQL中編寫所有代碼,而不是經常需要CLR UDF。你在計劃什麼加密? – tschmit007
我想使用'RSACryptoServiceProvider'和一個存儲在命名密鑰容器中的密鑰,如[這裏]所示(http://msdn.microsoft.com/zh-cn/library/ca5htw4f%28v=vs.110%29.aspx ) –