始终在查询中加密操作数冲突

时间:2018-04-13 10:43:56

标签: c# asp.net asp.net-mvc always-encrypted

我最近开始使用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 ...'查询时却没有。

0 个答案:

没有答案