流畅的NHibernate Where子句

流畅的NHibernate Where子句,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我必须用流利的NHibernate写一个查询 从用户名为'Abcd'和密码为'123456'的用户中选择* 如何使用会话创建上述查询。CreateCriteria是默认HBM文件的替代映射框架(Hibernate映射) NHibernate本身提供了不同的查询API,如 HQL-Hibernate查询语言 标准 查询-(LINQ等效) QueryOver-(强类型条件) SQL 对于条件,您的查询将大致如下: var users = session.CreateCriteria<Use

我必须用流利的NHibernate写一个查询

从用户名为'Abcd'和密码为'123456'的用户中选择*


如何使用会话创建上述查询。CreateCriteria是默认HBM文件的替代映射框架(Hibernate映射)

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

  • HQL-Hibernate查询语言
  • 标准
  • 查询-(LINQ等效)
  • QueryOver-(强类型条件)
  • SQL
对于条件,您的查询将大致如下:

var users = session.CreateCriteria<Users>()
                   .Add(Restrictions.Eq("UserName", "Abcd"))
                   .Add(Restrictions.Eq("Password", "123456"))
                   .List<Users>();
var users=session.CreateCriteria()
.Add(Restrictions.Eq(“用户名”、“Abcd”))
.Add(Restrictions.Eq(“密码”、“123456”))
.List();
查询:

var users = from u in session.Query<Users>()
            where u.UserName == "Abcd"
            && u.Password == "123456"
            select u;
var users=来自会话中的u.Query()
其中u.UserName==“Abcd”
&&u.密码==“123456”
选择u;

var users=session.Query()
其中(x=>x.UserName==“Abcd”和&u.Password==“123456”);
询问者:

var users = session.QueryOver<Users>()
                   .Where(x => x.UserName == "Abcd")
                   .And(u.Password == "123456")
                   .List();
var users=session.QueryOver()
。其中(x=>x.UserName==“Abcd”)
和(u.Password==“123456”)
.List();

查询

var users = session.QueryOver<Users>()
                   .Where(x => x.UserName == "Abcd" && x.Password == "123456")
                   .List();
var users=session.QueryOver()
。其中(x=>x.UserName==“Abcd”&&x.Password==“123456”)
.List();

如果您正在使用IQuery:

User user = new User();
user.username="Abcd";
user.password="123456";

IQuery q = session.CreateQuery("from foo in class Foo where
user.username=:username and user.password=:password");
q.SetProperties(user);
var users= q.List<User>(); 
User User=新用户();
user.username=“Abcd”;
user.password=“123456”;
IQuery q=session.CreateQuery(“来自类foo中的foo,其中
user.username=:username和user.password=:password”);
q、 设置属性(用户);
var users=q.List();

感谢您的精彩回复。我可以在上述查询中将用户作为类型返回吗?@Saad-单个用户?而不是收藏?当然您可以在Query/QueryOver上查看'SingleOrDefault()',而不是'List()'。我不确定您在标准上调用哪种方法来执行单个结果。手头没有Visual Studio。@Saad-太棒了,很乐意帮忙。这也可以在流畅的映射中完成吗?如果你能举例说明same@keyr-Fluent映射只是内存中的xml映射。映射对您运行查询的能力没有任何影响。除非你把地图弄错了。
User user = new User();
user.username="Abcd";
user.password="123456";

IQuery q = session.CreateQuery("from foo in class Foo where
user.username=:username and user.password=:password");
q.SetProperties(user);
var users= q.List<User>();