我想知道是否有人可以帮助nhibernate的示例标准。我认为我已经掌握了相当基本的东西,比如在给定的表中找到哪个字段匹配某个值等等。我现在正在绊倒的地方是你有一张带有另一个表的外键的表,以及尝试根据第二个表中的某个字段从第一个表中查找行。
作为一个例子......
如果我有
tblUser
pk int ID
int CompanyID
string Name
和
tblCompany
pk int ID
string CompanyName
如何构建标准以检索属于具有特定名称的公司的所有用户?我想我理解如何构建适当的映射文件/对象,我只是无法弄清楚如何使条件看起来与初始对象的子属性相对。
任何例子都很棒。
答案 0 :(得分:10)
Criterias无法直接查看子属性,因此如果要访问子属性,则需要使用别名
session.CreateCriteria<User>()
.CreateAlias("Company", "c") //the first argument is the property name from User
.Add(Restrictions.Eq("c.Name", companyName))
.List<User>();
此外,对于别名存在对嵌套属性的相同限制,因此如果您有User - &gt;公司 - &gt;所有者你需要两个别名
.CreateAlias("Company", "c")
.CreateAlias("c.Owner", "o")
此外,如果您更喜欢为整个查询使用别名,则在创建条件时也可以为根实体提供别名。
session.CreateCriteria<User>("u")
.CreateAlias("u.Company", "c")
.Add(Restrictions.Eq("c.Name", companyName))
.List<User>();