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
标签:String,识别方法,EF,System,Linq,EntityFramework,ToString,引用,报错 来源: https://www.cnblogs.com/sharing1986687846/p/10444147.html