Параметр дерева выражений C # для свойства родительской навигации

c# entity-framework expression-trees lambda

Вопрос

Как я могу создать выражение ParameterExpression для родительской стороны свойства 1 to * Navigation?

Следующие действия для дочернего объекта:

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

При попытке чего-то подобного на TParent выдает запрос, исходящий из контекста, а не как свойство для дочернего элемента.

Лямбда-эквивалент будет таким:

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

Изменить для ясности:

Для создания выражения элемента из свойства я использую следующее:

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

Таким образом, похоже, что я должен использовать MemberExpression вместо ParameterExpression для этого случая.

Ответ эксперта

Я немного смущен ... «.Bar» не является ParameterExpression - это MemberExpression . f - параметр. Что именно вы хотите сделать?

Обратите внимание , что один вариант , чтобы загрузить образец код в отражатель, поворот на .NET 3.5 намеков, и читать , как он это делает - это будет выглядеть как код здесь , но, как правило , достаточно легко следовать.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему