我在服务上有一种方法,该方法使用Linq To Entities选择以下数据:
var test = _repository.DbSet().
.Select(t => new CustomClass
{
Count = t.Count.ToString(),
}).ToList();
它可以在我的asp.net mvc
应用程序上运行,但是在通过Nunit
调用该方法时会引发以下错误:
其他信息:LINQ to Entities无法识别方法'System.String ToString()',并且该方法不能为 转换为商店表达式。
答案 0 :(得分:5)
我不确定您的代码如何在生产环境中工作,但根据this link:
此异常主要发生在我们使用实体查询SQL数据库时 框架。问题是您正在LINQ中调用ToString来 实体查询(从IQueryable到IEnumrable)。这意味着解析器是 尝试将ToString调用转换为其等效的SQL( 不可能...因此例外)。
您可以使用.AsEnumerable()
或.ToList()
对其进行修复:
var test = _repository.DbSet().
.AsEnumerable()
.Select(t => new CustomClass
{
Count = t.Count.ToString(),
}).ToList();
基于supported link,您可以使用SqlFunctions Class或DbFunctions Class 来进行此功能而无需全表扫描。