[英]Always encrypted with Entity Framework and Includes fails to materialise query
我遇到的問題是,總是加密才能與Entity Framework一起使用。
我的目標是.Net 4.6.1,已在我的連接字符串中啟用了“ Column Encryption Setting=Enabled
,並且我可以使用以下方法成功撥打電話並接收解密的內容
var results = dbContext.EncryptedTable.ToList()
EncryptedTable的1列使用確定性加密,數據類型為Varchar(Max)。
DbContext具有CodeFirst支持
Property(x => x.EncryptedColumn)
.HasColumnName("EncryptedColumn").IsRequired().IsUnicode(false);
一旦我開始在dbContext上使用包含,事情就會開始變糟。
這有效
var id = Guid.Parse("123-456-789");
var result = dbContext
.TableA
.Include(x => x.EncryptedTable)
.FirstOrDefault(x => x.id == id);
這將引發錯誤: Operand type clash: varchar is incompatible with varchar(max) encrypted with (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256',
var id = Guid.Parse("123-456-789");
var result = dbContext.TableA
.Include(x => x.TableB)
.Include(x => x.EncryptedTable)
.FirstOrDefault(x => x.id == id);
在兩次調用中執行SQL配置文件可以看到第二次調用exec sp_describe_parameter_encryption
。
EF是否支持此方案並且始終對其進行加密?
您上一個查詢不起作用的原因是始終加密功能不支持復雜查詢。 聯合是使用EF包含語法(用於一對多關系)時出現的不受支持的語法之一。
您可能需要將查詢重新整理為2個查詢,以避免使用並集。 [對不起,語法錯誤]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.