我最近开始使用Always Encrypted with SQL Server 2016来加密敏感信息。
在大多数情况下,无缝过渡都是一帆风顺。
但有一件事情出现了,出现以下错误 -
操作数类型冲突:nvarchar(255)加密(encryption_type = 'RANDOMIZED',encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name = 'CEK_AutoK2',column_encryption_key_database_name ='hrsys')是 与nvarchar不兼容声明无法准备。
抛出此异常的方法如下 -
public ActionResult GetStaffList(string term)
{
var staffs = from e in db.Staffs
where e.FirstName.Contains(term) || e.LastName.Contains(term)
&& e.EmploymentStatus == "Active"
select new
{
label = e.FirstName + " " + e.LastName,
id = e.Id
};
return (Json(staffs, JsonRequestBehavior.AllowGet));
}
但是,如果我修改方法,请转到此 -
public ActionResult GetStaffList(string term)
{
var staffSearch= db.Staffs
.ToList()
.Where(e => e.FirstName.Contains(term) || e.LastName.Contains(term))
.Where(e => e.EmploymentStatus == "Active");
var staffs = from e in staffSearch
select new
{
label = e.FirstName + " " + e.LastName,
id = e.Id
};
return (Json(staffs, JsonRequestBehavior.AllowGet));
}
它不会抛出错误。
无论如何将两个'查询'变量合并到一个变量中,确保数据以JSON的形式返回,并带有以下块:
select new
{
label = e.FirstName + " " + e.LastName,
id = e.Id
}
另外我无法理解的是,当使用'from e .....'查询时会抛出错误,但是在使用'db.Staff ...'查询时却没有。