Paramètre de l'arbre d'expression C # pour la propriété de navigation parente

c# entity-framework expression-trees lambda

Question

Comment créer une ParameterExpression pour le côté parent d'une propriété de navigation 1 à *?

Les travaux suivants pour l'entité enfant:

var parameter = Expression.Parameter(
    typeof(T), // where T is the entity type
    GetParameterName()); // helper method to get alias

Essayer quelque chose de similaire sur TParent génère une requête provenant du contexte et non d'une propriété sur l'enfant.

L'équivalent lambda serait comme ceci:

var q = from f in context.Foo 
        where f.Bar.BarId == 1...
         // where bar is the Navigation Property to the parent

Modifier pour plus de clarté:

J'utilise ce qui suit pour créer une expression de membre à partir d'une propriété:

Expression exp = Expression.Equal(
    Expression.Property(parameter, "SomeColumn"),
    Expression.Constant("SomeValue"));

Il semble donc que je devrais utiliser MemberExpression au lieu de ParameterExpression pour ce cas.

Réponse d'expert

Je suis un peu confus ... ".Bar" n'est pas une ParameterExpression - c'est une MemberExpression . f est le paramètre. Qu'est-ce que vous voulez faire exactement?

Notez qu’une option consiste à charger l’exemple de code dans le réflecteur, à activer les conseils .NET 3.5 et à lire comment il le fait: il ressemble au code ici , mais il est généralement assez facile à suivre.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow