Necesita ayuda para diseñar una consulta en ELinq
-
08-07-2019 - |
Pregunta
Esta es mi consulta:
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
Tengo la sensación de que puedo mejorar el rendimiento, porque la consulta anterior es (corríjame si me equivoco) realiza 2 viajes de ida y vuelta al servidor; 1 vez por el Conde y luego cuando se ejecuta.
Quiero enviar este elemento Count al DB, por lo que debería ser solo un viaje de ida y vuelta al servidor.
Aunque no es exactamente lo que necesito, esto es realmente lo que necesito:
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)
Desearía poder usar este SPROC (es decir, la función de importación, etc.), pero necesito Incluir (" Proveedor ")
, lo que me obliga a hacerlo con Linq.
¡Cualquier tipo de sugerencia será realmente bienvenida!
Solución
Probablemente no esté haciendo dos viajes a la base de datos. Se optimizará antes de ejecutarse, y nada se ejecutará hasta que intente leer los datos.
Normalmente verifico el SQL que se crea usando el Analizador de SQL. También he encontrado que LinqPad es muy útil.