C # Expression Tree Parameter per la proprietà di navigazione principale

c# entity-framework expression-trees lambda

Domanda

Come posso creare un ParameterExpression per il lato genitore di una proprietà di navigazione da 1 a *?

I seguenti lavori per l'entità figlio:

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

Provare qualcosa di simile su TParent produce una query originata dal contesto e non come una proprietà sul figlio.

L'equivalente lambda sarebbe come questo:

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

Modifica per chiarezza:

Io uso il seguente per creare un'espressione membro da una proprietà:

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

Quindi sembra che dovrei usare MemberExpression invece di ParameterExpression per questo caso.

Risposta esperta

Sono un po 'confuso ... ".Bar" non è un ParameterExpression - è un MemberExpression . f è il parametro. Che cosa esattamente vuoi fare?

Si noti che un'opzione è quella di caricare il codice di esempio in reflector, girare i suggerimenti di .NET 3.5 e leggere come funziona - apparirà come il codice qui , ma di solito è abbastanza facile da seguire.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché