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)