Nhibernate ActiveRecord和LINQ查询的问题

Nhibernate ActiveRecord和LINQ查询的问题,nhibernate,activerecord,linq-to-nhibernate,castle-activerecord,Nhibernate,Activerecord,Linq To Nhibernate,Castle Activerecord,我有一个简单的课程: public class User : ActiveRecordLinqBase<User> { [PrimaryKey(Column = "user_id", Length = 20)] public string Id { get; set; } [Property(Column = "password", Length = 16)] public string Password { get; set; } ...

我有一个简单的课程:

public class User : ActiveRecordLinqBase<User>
{
    [PrimaryKey(Column = "user_id", Length = 20)]
    public string Id { get; set; }

    [Property(Column = "password", Length = 16)]
    public string Password { get; set; }
    ...
}
我得到以下SQL:

从用户中选择此用户id作为user1\u 0\u,此密码作为password0\u 0,此角色作为role0\u 0,此用户id像什么?p0;?p0=“%john%”

我做错什么了吗?

这两个查询之间有什么区别?


编辑:我也尝试了

return ActiveRecordLinq.AsQueryable<T>().Where(predicate);
返回ActiveRecordLinq.AsQueryable().Where(谓词);

没有成功。

现在这只是因为我喜欢代码,有时我会注意到一些东西。。。我不是活跃记录方面的专家,所以这只是一个猜测

也许您应该将
FindAll
方法的签名从

public IEnumerable<T> FindAll(Func<T, bool> predicate)
public IEnumerable FindAll(Func谓词)
进入

public IEnumerable FindAll(表达式谓词)
这将允许您点击正确的重载
Where
,这很可能是您正在寻找的重载


这是因为一个
Func
不能像一个
Func
表达式那样反映出来。

现在这只是因为我喜欢代码,有时我会注意到一些东西。。。我不是活跃记录方面的专家,所以这只是一个猜测

也许您应该将
FindAll
方法的签名从

public IEnumerable<T> FindAll(Func<T, bool> predicate)
public IEnumerable FindAll(Func谓词)
进入

public IEnumerable FindAll(表达式谓词)
这将允许您点击正确的重载
Where
,这很可能是您正在寻找的重载


这是因为一个
Func
不能像一个
Func
表达式那样反映出来。

花了大约2.5个小时:/非常感谢;)花了大约2.5个小时:/非常感谢;)
return ActiveRecordLinq.AsQueryable<T>().Where(predicate);
public IEnumerable<T> FindAll(Func<T, bool> predicate)
public IEnumerable<T> FindAll(Expression<Func<T, bool>> predicate)