使用始终加密实体框架和Azure Key Vault

Jon*_*yce 5 sql-server entity-framework azure-keyvault always-encrypted

我使用Always Encrypted和存储在Azure Key Vault中的列主密钥对Azure SQL数据库中的某些列进行了加密,但是我无法使用Entity Framework从我的应用程序访问它们.

最近有一篇MSDN文章和一篇较旧的博客文章解释了如何设置SqlConnection以使用Azure Key Vault的Always Encrypted,因此我猜测可以使用接受a 的构造函数创建普通的DbContext DbConnection.

问题是我正在使用一个IdentityDbContext没有那个构造函数的构造函数 - 唯一一个需要一个构造函数的构造函数,这个函数目前超出了我的工资等级.DbConnectionDbCompiledModel

任何人都可以解释如何设置IdentityDbContext使用密钥保险库?

OzB*_*Bob 0

EF 团队似乎有一个使用加密的测试

var connectionStringBuilder = new SqlConnectionStringBuilder(SqlServerTestStore.CreateConnectionString("adventureworks"))
{
    Encrypt = encryptionEnabled
};
var options = new DbContextOptionsBuilder();
options.UseSqlServer(connectionStringBuilder.ConnectionString);

using (var context = new AdventureWorksContext(options.Options))
{
    context.Database.OpenConnection();
    Assert.Equal(ConnectionState.Open, context.Database.GetDbConnection().State);
}
Run Code Online (Sandbox Code Playgroud)

TODO:测试 IdentityDbContext 构造函数公开与 AdventureWorksContext 相同的构造函数。