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

        偶然出现这个错误,原来在Linq查询中,不支持ToString转换操作,不只是ToString转换,Convert等转换也不能进行。C#.NET如此,VB.NET也是如此。

        找到几种解决办法:

一、在EF4.0之后,可以用SqlFunctions.StringConvert来代替,另外MSDN说明,这个方法只能出现在linq查询表达式中,而不能在其他地方使用。



二、在使用EF之外手动完成所有ToString()转换,这需要你自己格外小心,需要避免所有使用EF时它可能为我们调用ToString()的情况。另外如果是在字符串的Contains方法牵涉到了ToString()造成的异常,可以解决使用Any方法替换Contains解决。


三、在数据量较小的情况下,使用ToList()等方法,转换成Linq  to  Object再进行条件筛选



        解决问题之后思考了好一阵,问什么EF不支持ToString()这个方法,看到有人说是为了更好的跨数据库,但是想不明白这和跨数据库有什么关系。

你可能感兴趣的:(LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。)