我通过这个链接如下实施的始终是加密的概念与实体框架在我的应用程序。
这是我initialSchema.cs向上()迁移方法我当前应用程序的迁移文件夹下的文件。
public override void Up()
{
CreateTable(
"dbo.PersonalInfoTables",
c => new
{
ID = c.Int(nullable: false, identity: true),
Firstname= c.String(),
LastName= c.String(),
Address= c.String(),
SSN = c.String(),
})
.PrimaryKey(t => t.ID);
}
从那以后,我发表意见SSN申请,并添加下面的SQL语句用于加密SSN列。
//manually add the encrypted columns
Sql("ALTER TABLE [dbo].[PersonalInfoTables] ADD [SSN] [nvarchar](11) COLLATE Latin1_General_BIN2 ENCRYPTED WITH(ENCRYPTION_TYPE = DETERMINISTIC, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256', COLUMN_ENCRYPTION_KEY = CEK_Auto1) NOT NULL");
然后运行程序包管理器控制台更新-database命令。
上面的代码将工作只有在CEK密钥已经可用于加密列。但是当过我跑我的应用程序再次删除现有的本地数据库之后,它给像CEK关键的例外是不可用,也没有申请移民。
如何解决上述问题,添加ALTER SQL语句之后并删除本地数据库?
解决上述问题的唯一,改变向上()迁移代码再一次,但我不希望这样的情况。
请参阅的Code First - this article的迁移部分,您需要(例如,通过使用SQL Server Management Studio)来创建数据库列主密钥,列加密密钥,模式等实体框架之外。关于这方面更多的信息可以发现here