我试图使用标准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>();

希望它能帮助

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top