4

我已经加密了一些列的Azure的SQL数据库,使用Always Encrypted并存储在Azure中的关键库列主密钥加密的,但我无法从我的应用程序访问它们使用实体框架。使用始终与实体框架和Azure的主要跳马

有一个最近MSDN articleolder blog post解释如何设置为使用始终与Azure的主要跳马加密一个SqlConnection,所以我猜,一个正常的DbContext可以使用接受DbConnectionconstructor创建。

的问题是,我使用的是IdentityDbContext,其不具有构造 - 唯一constructor,需要一个DbConnection也需要DbCompiledModel,这已超出目前我的工资档次。

谁能解释如何建立一个IdentityDbContext使用密钥库?

+0

我调查发现...加入一提“列加密设置=已启用”,在ConnectionString中,需要添加的SqlParameter用于加密列。这里:https://azure.microsoft.com/en-us/documentation/articles/sql-database-always-encrypted/#strongimportantstrong你是在加密一列还是整个数据库? – OzBob

回答

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相同的构造函数。