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

1 篇文章 0 订阅
1 篇文章 0 订阅

 今天在用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参数)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值