【发布时间】:2013-09-10 09:08:56
【问题描述】:
我有以下代码:
public void SalesCount(string customerId)
{
..
..
return ...;
}
var resultQuery = dataContext.Customers
.Where (c => c.Name == "Alugili")
.Where (c => SalesCount(c.CustomerId) < 100);
当我执行 resultQuery 时,我得到一个 SQL 异常的翻译。
我需要在 Where 中调用 SalesCount 我可以这样做,是否有任何解决此问题的方法!
【问题讨论】:
-
标头中的 Linq2SQL,标签中的 EF。真相在哪里? :)
-
Linq2SQL 和 EF 是相似但完全不同的技术。我想,你在某个地方感到困惑。
-
当面对这样的情况时,你会问自己:是否有可能实现
SalesCount在 T-SQL 中所做的任何事情?如果是这样,请尝试创建一个代表Customers表的视图,但添加一个额外的列(SalesCount的结果)。然后将 LINQ 中的 VIEW 映射到 SQL 实体,并对该实体执行选择。通过这种方式,您可以避免在 .NET 中处理大量记录,而让 RDBMS 为您完成。 -
非常,您可以制作 CLR UDF 并在您的 linq 中调用它。在下面提到的情况下,如果使用 ToArray、AsEnumerable 等,您将获得内存负载。
标签: c# .net linq entity-framework