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



原文地址:https://www.cnblogs.com/sharing1986687846/p/10444147.html