簡體   English   中英

始終使用Entity Framework和Includes加密無法實現查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM