父导航属性的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提示,并阅读它是如何做到的 - 它看起来像这里的代码,但通常很容易遵循。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因