带有基于加密列的EF存储过程引发操作数冲突异常

时间:2019-01-04 09:49:21

标签: entity-framework entity-framework-6 sql-server-2016

我正在尝试从EF 6调用存储的proc。SearchField2Param是基于nvarchar的列,其大小为20。此参数将进入表列下的SP,该列已使用“始终加密”功能进行了加密。

异常:-操作数类型冲突:nvarchar与nvarchar(20)不兼容,加密方式为(encryption_type ='DETERMINISTIC')

某种程度上,我有一种感觉,即sqlparameter无法使nvarchar(20)大小的列与目标db列匹配。

SeachField1Param = new SqlParameter("SearchField1", SearchField1);
    SearchField2Param = new SqlParameter("SearchField2",System.Data.SqlDbType.NVarChar, 20)
                    {
                        Value = SearchField2
                    };

                    try
                    {
                        return this.ExecuteProcedure("dbo.InsertSearch", SeachField1Param, SearchField2Param);
                    }



public static int ExecuteProcedure(this DbContext context, string procedureName, params SqlParameter[] parameters)
        {
            string sql = SqlCommandHelper.GetSqlCommandString(procedureName, parameters);
            return context.Database.ExecuteSqlCommand(sql, parameters);
        }

0 个答案:

没有答案