親ナビゲーションプロパティのC#式ツリーパラメータ

c# entity-framework expression-trees lambda

質問

1 to * Navigation Propertyの親側にParameterExpressionを作成するにはどうすればよいですか?

子エンティティについては、次のように動作します。

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

TParentで同様のことを試してみると、子のプロパティではなくContextを起点とするクエリが生成されます。

ラムダ等価は次のようになります:

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"));

だから私はこの場合には、ParameterExpressionの代わりにMemberExpressionを使用する必要があるようです。

エキスパート回答

私はちょっと混乱しています... ".Bar" ParameterExpressionではなくMemberExpressionです。 fはパラメータです。あなたは何をしたいのですか?

1つのオプションは、サンプルコードをリフレクターにロードし、.NET 3.5ヒントを回し、それがどのようになるかを読み取ることです 。これは、 ここのコードのように見えますが、通常は十分に簡単です。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ