/ / Dynamic Linq donne une erreur en combinaison avec EntityFramework - c #, linq, entity-framework, linq-to-entity, dynamic-linq

Dynamic Linq génère une erreur en combinaison avec EntityFramework - c #, linq, entity-framework, linq-to-entity, dynamic-linq

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 № 1

Juste utiliser Constructeur de prédicats joindre (ou / et) plusieurs prédicats.