1

如何为 1 到 * 导航属性的父端创建 ParameterExpression?

以下适用于子实体:

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

在 TParent 上尝试类似的操作会产生源自上下文的查询,而不是作为子属性的查询。

等效的 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 。

4

1 回答 1

1

我有点困惑......“.Bar”不是ParameterExpression- 它是MemberExpression. f是参数。你到底想做什么?

请注意,一种选择是将示例代码加载到反射器中,打开 .NET 3.5 提示,然后阅读它是如何做到的——它看起来像这里的代码,但通常很容易理解。

于 2009-02-11T15:27:08.590 回答