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!

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top