首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq to entities优化

Linq to entities优化
EN

Stack Overflow用户
提问于 2012-12-11 01:08:40
回答 2查看 117关注 0票数 0

我有以下linq to entities查询

代码语言:javascript
复制
from p in Products
where p.ProductId==1219
select new
{
    Name = p.ProductName,
    count = (from dc in DiscountCodes
        where dc.ProductId == p.ProductId
        select dc).Count()
}

现在生成的sql是(使用linqpad)

代码语言:javascript
复制
-- Region Parameters
DECLARE @p0 Int = 1219
-- EndRegion
SELECT [t0].[ProductName] AS [Name], (
    SELECT COUNT(*)
    FROM [DiscountCode] AS [t1]
    WHERE [t1].[ProductId] = [t0].[ProductId]
    ) AS [count]
FROM [Product] AS [t0]
WHERE [t0].[ProductId] = @p0

这似乎不是很有效,特别是当我需要开始在相关表上添加更多计数时。

有没有更好的方法来优化这个查询?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2012-12-11 01:16:00

我假设您在DiscountCodesProducts表之间有一种关系。我的意思是DiscountCodes表有ProductId ForeignKey

那这应该会更好

代码语言:javascript
复制
from p in Products
where p.ProductId==1219
select new
{
    Name = p.ProductName,
    Count = p.DiscountCodes.Count,
}
票数 0
EN

Stack Overflow用户

发布于 2012-12-11 01:16:29

实体框架通过父表和子表的外键关系来创建父表和子表之间的关系。因此,在这种情况下,下面的查询应该可以为您工作。

代码语言:javascript
复制
from p in Products
where p.ProductId==1219
select new
{
    Name = p.ProductName,
    count = p.DiscountCodes.Count()
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13805680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档