J'ai posté quelques questions sur le filtrage dans une requête de chargement impatiente, et je suppose que l'EF ne prend pas en charge le filtrage à l'intérieur de l'instruction Include
, donc je suis venu avec cela.Projection LINQ dans Entity Framework
Je veux effectuer une requête simple où obtenir un ChildProdcut
par numéro sku et PriceTiers
qui sont filtrés pour IsActive
.
Dim ChildProduct = ChildProductRepository.Query.
Where(Function(x) x.Sku = Sku).
Select(Function(x) New With {
.ChildProduct = x,
.PriceTiers = x.PriceTiers.
Where(Function(y) y.IsActive).
OrderBy(Function(y) y.QuantityStart)
}).Select(Function(x) x.ChildProduct).Single
Y a-t-il un moyen plus efficace de le faire? Je suis sur la bonne voie du tout? Ça marche.
Une autre chose que je ne comprends vraiment pas est pourquoi cela fonctionne-t-il? Avez-vous juste à charger un graphe d'objet et l'EF le remarquera et verra que ces collections appartiennent à ChildProduct même si elles sont à l'intérieur d'un type anonyme?
En outre, quelles sont les normes pour le formatage d'une longue expression LINQ?
Auriez-vous un exemple de cela? – Sam