这是我的查询:
Dim vendorId = 1, categoryId = 1
Dim styles = From style In My.Context.Styles.Include("Vendor") _
Where style.Vendor.VendorId = vendorId _
AndAlso (From si In style.StyleItems _
Where si.Item.Group.Category.CategoryId = _
categoryId).Count > 0 _
Distinct
我觉得我可以提高性能,因为上面的查询是(如果我错了,请纠正我)对服务器执行 2 次往返;由 Count 执行 1 次,然后在执行时执行。
我想把这个 Count 东西发送到数据库,所以它应该只是到服务器的一次往返。
即使它不是确切的东西,这实际上是我需要的:
SELECT DISTINCT Style.*
FROM Style INNER JOIN
Vendor ON Style.VendorId = Vendor.VendorId INNER JOIN
StyleItem ON Style.StyleId = StyleItem.StyleId INNER JOIN
Item ON StyleItem.ItemId = Item.ItemId INNER JOIN
[Group] ON Item.GroupId = [Group].GroupId INNER JOIN
Category ON [Group].CategoryId = Category.CategoryId
WHERE (Style.VendorId = @vendorid) AND (Category.CategoryId = @CategoryId)
我希望我可以使用这个 SPROC(即函数导入等),但我需要Include("Vendor")
,这限制了我用 Linq 来做。
任何形式的建议都会受到欢迎!