我正在尝试亲身体验 SQL Server 2016 的 Always Encrypt 功能。我正在使用现有的应用程序和数据库来执行此操作。
我有一个表 [User],我在其中使用“确定性”类型加密了“密码”列。我已经更改了连接字符串,并且能够检索所有行。我已经为这个表创建了存储库。
我正在尝试使用 InsertOnSubmit() 和 SubmitChanges() 使用 LinqToSQL 在此表中插入和更新行。
但是每当我尝试插入新行或更新现有行时,我都会收到错误消息:
消息 206,级别 16,状态 2,第 7 行操作数类型冲突:varchar 与使用 (encryption_type = 'DETERMINISTIC',encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name = 'CEK_Auto1',column_encryption_key_database_name = 'BRO_UAT') 加密的 varchar(20) 不兼容collation_name = 'Latin1_General_BIN2'
我已经阅读了使用存储过程和参数化解决问题的文章。但是,正如我之前提到的,这是一个现有的项目,我使用了 LinqToSql,不想更改代码。如果列未加密,则插入/更新工作正常!
我错过了一些设置吗?请指出我正确的方向。