使用LINQ2SQL的反射创建lambda表达式

时间:2012-12-22 13:35:38

标签: c# linq-to-sql lambda expression

我有这个班级

class abstract EntityBase
{
    public abstract int Id {get; set; }
}

现在,我更改了我的linq2sql生成的用户表类(为Id设置覆盖)

public partial class User: EntityBase, INotifyPropertyChanging, INotifyPropertyChanged
{
  ...
  public override int Id {...}
  ...
}

然后,我有另一个具有此功能的模板助手类

public static T SingleOrDefault(System.Linq.Expressions.Expression<Func<T, bool>> func)
{
    System.Data.Linq.DataContext oDataContext = null;
    T retData = GetAll(out oDataContext).SingleOrDefault(func);
    if (retData != null)
    {
        retData.CurrentDataContext = oDataContext;
    }
    return retData;
}

我像这样使用它

Helper<EntityBase>.SingleOrDefault(t => t.Id == 3);

我得到:类成员 EntityBase`2.Id未映射 。问题是它使用来自EntityBase的Id而不是来自User类,所以我的问题是我如何为此构造相应的lambda表达式,以便它可以从用户类引用Id。 希望我很清楚。

感谢。

0 个答案:

没有答案