流利的NHibernate Where Clause

Saa*_*aad 21 nhibernate fluent-nhibernate

我必须在Fluent NHibernate中编写一个查询

Select * from Users where UserName = 'Abcd' AND Password = '123456'

如何用上面的查询创建 session.CreateCriteria

Phi*_*ill 47

Fluent NHibernate是默认HBM文件的替代映射框架(Hibernate Mapping)

NHibernate本身提供了不同的查询API

  • HQL - Hibernate查询语言
  • 标准
  • 查询 - (LINQ等效)
  • QueryOver - (强类型标准)
  • SQL

对于Criteria,您的查询将是以下内容:

var users = session.CreateCriteria<Users>()
                   .Add(Restrictions.Eq("UserName", "Abcd"))
                   .Add(Restrictions.Eq("Password", "123456"))
                   .List<Users>();
Run Code Online (Sandbox Code Playgroud)

查询:

var users = from u in session.Query<Users>()
            where u.UserName == "Abcd"
            && u.Password == "123456"
            select u;
Run Code Online (Sandbox Code Playgroud)

要么

var users = session.Query<Users>()
                   .Where(x => x.UserName == "Abcd" && u.Password == "123456");
Run Code Online (Sandbox Code Playgroud)

QueryOver:

var users = session.QueryOver<Users>()
                   .Where(x => x.UserName == "Abcd")
                   .And(u.Password == "123456")
                   .List();
Run Code Online (Sandbox Code Playgroud)