これは私のクエリです:
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 回、次に実行されたときに。
このカウントをDBに送信したいので、サーバーへの往復は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 で行う必要があります。
どんな種類の提案も大歓迎です!