我有以下linq to entities查询
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)
-- 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这似乎不是很有效,特别是当我需要开始在相关表上添加更多计数时。
有没有更好的方法来优化这个查询?
谢谢
发布于 2012-12-11 01:16:00
我假设您在DiscountCodes和Products表之间有一种关系。我的意思是DiscountCodes表有ProductId ForeignKey
那这应该会更好
from p in Products
where p.ProductId==1219
select new
{
Name = p.ProductName,
Count = p.DiscountCodes.Count,
}发布于 2012-12-11 01:16:29
实体框架通过父表和子表的外键关系来创建父表和子表之间的关系。因此,在这种情况下,下面的查询应该可以为您工作。
from p in Products
where p.ProductId==1219
select new
{
Name = p.ProductName,
count = p.DiscountCodes.Count()
}https://stackoverflow.com/questions/13805680
复制相似问题