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相同的構造函數。