父導航屬性的C#表達式樹參數

c# entity-framework expression-trees lambda

如何為1到*導航屬性的父端創建ParameterExpression?

以下適用於子實體:

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

在TParent上嘗試類似的東西會產生一個源自Context的查詢,而不是作為子項的屬性。

lambda等價物是這樣的:

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 - 它是一個MemberExpressionf是參數。你究竟想做什麼?

請注意,一個選項是將示例代碼加載到反射器中,轉換.NET 3.5提示,並閱讀它是如何做到的 - 它看起來像這裡的代碼,但通常很容易遵循。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因