Это мой запрос:
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 обращения к серверу; 1 раз по счету, а затем при его выполнении.
Я хочу отправить этот подсчет в БД, так что это должен быть только один прием на сервер.
Даже это не совсем то, на самом деле это то, что мне нужно:
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.
Любые предложения будут действительно приветствоваться!