题
我试图使用标准API来编写以下HQL查询:
var userList = _session
.CreateQuery("select u from User u where u.Role.ID=3 and u.Customer.ID=:cID")
.SetInt32("cID", 1)
.List<User>();
(3个NHibernate的对象:用户(ID,姓名,角色,客户),角色(ID,姓名)和客户(ID,姓名)
我尝试以下,但它不起作用,因为NHibernate的试图找到与角色相关联的客户:
var userList = _session
.CreateCriteria(typeof(User))
.CreateCriteria("Role")
.Add(Restrictions.Eq("ID", 3) )
.CreateCriteria("Customer")
.Add(Restrictions.Eq("ID", 1) )
.List<User>();
做的任何其他方式(即工作!)?
解决方案
可以使用别名
var userList = _session
.CreateCriteria(typeof(User), "u")
.CreateAlias("u.Role", "r")
.Add(Restrictions.Eq("r.ID", 3) )
.CreateAlias("u.Customer", "c")
.Add(Restrictions.Eq("c.ID", 1) )
.List<User>();
希望它能帮助
不隶属于 StackOverflow