【发布时间】:2015-04-29 12:47:06
【问题描述】:
我有一个使用实体框架获取产品信息的以下 LINQ 查询
productDetails.Items = (from productDetail in db.ToList()
select new prod
{
ID = productDetail.ID
ProdName = productDetail.ProductName,
...
...
...
...
Calaculation1 = GetCalaculation(productDetail.Calc1),
Calaculation1 = GetCalaculation(productDetail.Calc2),
...
...
...
...
Calaculation15 = GetCalaculation(productDetail.Calc3)
}
).ToList();
GetCalaculation 方法还使用 LINQ 查询 DB。如果我要获取 100 条记录,查询会很慢。我该如何优化它?
【问题讨论】:
-
我认为您还需要向我们展示 GetCalaculation()。
-
因为您正在调用
ToList,所以您的查询在内存中运行,并且每个GetCalculation方法调用都会进行单独的数据库查询。那肯定不会扩展。 -
简短的回答是不要使用实体框架编写直接查询或使用 db.SQLQuery
-
这里是 GetCalculation 方法 var dbQuery = (来自 db.Calculations 中的计算 wherecalculation.calc == calc1 选择计算); totalsum = (从 dbQuery 中的 xyz 选择 (Decimal?)xyz.calc).Sum() ?? 0;
标签: c# asp.net-mvc linq linq-to-entities