SQLserver 中 Text 数据类型 在 EntityFramework 中使用注意

来源:互联网 发布:恶意软件图片 编辑:程序博客网 时间:2024/06/05 16:30

 今天在用EF访问SQLServer 中的一个数据类型是Text 字段的类型查询。想要查询参数中包含Text字段的内容,如下查询方式。

Expression<Func<, bool>> conditions;

            if (!string.IsNullOrWhiteSpace(text参数))
             conditions = x => text参数.Contains(x.Text字段);
            else conditions = null;

结果在Count()时报错:

执行命令定义时出错。有关详细信息,请参阅内部异常。

归根究底原因就是 EF 生成的 SQL语句中会有如下 :WHERE ( CAST(CHARINDEX([Extent1].[Text字段], @p__linq__0) AS int)) > 0  导致

{"参数数据类型 text 对于 charindex 函数的参数 1 无效。"}  的错误。Text类型的字段不能作为charindex函数的参数。

其实不只是这个一个函数,还有好多函数的参数都不能用Text字段的吧。

以后使用的时候一定要注意了。

解决方法一:把Text类型的字段改为varchar 或者nvarchar吧。

解决方法二:

最后其实我是把查询条件弄反了。最后修改查询条件:x=>x.Text字段.Contains(text参数)。

0 0