Nous utilisons Entity Framework et nous avons besoin de requêtes de génération d'exécution sur nos objets. Construire des arbres d'expression à partir de zéro semble être un travail fastidieux, nous souhaitons donc utiliser "System.Linq.Dynamic"
En travaillant sur les exemples, j'ai obtenu ceci:
dbModel.As.Where("AStuff.Contains(@0) OR AStuff.Contains(@1)","ac","bc")
Mais si j'essaie de construire les expressions séparément, comme ceci:
Expression<Func<A, bool>> predicateA =
DynamicExpression.ParseLambda<A, bool>(
"AStuff.Contains(@0)",
"ac"
);
Expression<Func<A,bool>> predicateB =
DynamicExpression.ParseLambda<A, bool>(
"AStuff.Contains(@0)",
"bc"
);
dbModel.As.Where("@0(it) OR @1(it)", predicateA, predicateB);
il explose avec une exception: NotSupportedException >> Le type de noeud d'expression LINQ "Invoke" n'est pas pris en charge dans LINQ to Entities.
Il est peut-être possible de construire la requête entière dans la première forme, mais cette dernière serait plus utile dans notre scénario. Y at-il un moyen de faire ce travail?
Réponses:
0 pour la réponse № 1Juste utiliser Constructeur de prédicats joindre (ou / et) plusieurs prédicats.