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.
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.