我在:
中声明IQueryable<T>
对象时遇到此问题
select new { };
部分当我想调用像Tostring()
之类的无LINQ方法或我拥有的任何其他函数时如下:
select new
{
TFPricep = CurrancyHelper.DecimalToCurrency(TFPrice),
TFDatep = TFDate.Tostring()
};
我收到这条着名的错误消息:
LINQ to Entities无法识别方法'foo'。
所以会发生的是我执行ToList()
并从数据库中获取数据,之后我将不得不在列表上执行foreach循环并在每个列表上调用ToString()
等函数记录哪些有性能问题。据我测试,在LINQ to SQL中没有这样的问题,但Entity Framework
我想知道在查询时是否有任何方法可以调用无LINQ方法,并阻止对每个循环执行此操作?
答案 0 :(得分:1)
没有
答案 1 :(得分:1)
当我遇到这个问题时,我发现了两种可能的解决方案,但最终决定避免使用Linq to Entities无法翻译的任何内容。
我找到了两个选项:
1)如果您使用的是.edmx文件,请查看: http://msdn.microsoft.com/en-us/library/vstudio/dd456857(v=vs.110).aspx
2)这个其他选项有点丑陋,但不需要.edmx文件:
http://damieng.com/blog/2009/06/24/client-side-properties-and-any-remote-linq-provider https://www.nuget.org/packages/Microsoft.Linq.Translations/ https://github.com/peschuster/PropertyTranslator
最后一条评论:我从未尝试过这些选项,所以我不是百分之百确定他们甚至可以工作,但他们看似合法。