LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。...

LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。

       基于EF的项目开发中,遇到报错提示:

LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。

       但是代码如下:

 

var item = (from s in context.Portal.AsNoTracking()
                            where s.Domain.Contains(host)
                            && s.Status != PortalStatus.Delete.ToString()
                             select s).FirstOrDefault();

       同样的一段代码,在另一个项目中可用,不会报错,但是自己搭建的项目中报错。如果把这段代码去除:

&& s.Status != PortalStatus.Delete.ToString()

,则不会报错了,之前自己也有遇到过,以为是Linq内本来就不支持内部ToString()这样直接转换,但是这次遇到同样的语句在另一个项目中可用,在这个项目中不可用,然后就找原因,网上说的基本都是再次引用别的,基本都是要么Linq外转换好,要么通过SQLFun来实现,但是没这个方便直观。

         后来找到原因,是因为引用的EntityFramework.SqlServer的版本较低,不支持Linq内直接ToString(),然后引用更高版本的EntityFramework及EntityFramework.SqlServer后,不会报错了。

报错时EF引用版本:EntityFramework.6.0.0

解决报错引用的EF版本:EntityFramework.6.1.3

 
   

 

posted @ 2019-02-27 15:42 波霸38 阅读( ...) 评论( ...) 编辑 收藏

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

波霸38

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值