我使用Always Encrypted和存储在Azure Key Vault中的列主密钥加密了Azure SQL数据库中的某些列,但是我在使用Entity从我的应用程序访问它们时遇到了问题框架。
最近的MSDN article和older blog post解释了如何设置SqlConnection以使用Azure Key Vault始终加密,因此我猜测正常的DbContext可以使用接受DbConnection
的{{3}}创建。
问题在于我使用的IdentityDbContext
没有构造函数 - 唯一需要DbConnection
的{{3}}也需要DbCompiledModel
1}},目前超出了我的工资等级。
有人可以解释如何设置IdentityDbContext
以使用密钥保管库吗?
答案 0 :(得分:0)
EF团队似乎有test that uses encryption。
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);
}
TODO:test IdentityDbContext构造函数公开与AdventureWorksContext相同的构造函数。