建立nhibernate的标准

时间:2009-09-04 18:16:49

标签: asp.net nhibernate search criteria

我想知道是否有人可以帮助nhibernate的示例标准。我认为我已经掌握了相当基本的东西,比如在给定的表中找到哪个字段匹配某个值等等。我现在正在绊倒的地方是你有一张带有另一个表的外键的表,以及尝试根据第二个表中的某个字段从第一个表中查找行。

作为一个例子......

如果我有

tblUser
pk int    ID
   int    CompanyID
   string Name

tblCompany
pk int     ID
   string CompanyName

如何构建标准以检索属于具有特定名称的公司的所有用户?我想我理解如何构建适当的映射文件/对象,我只是无法弄清楚如何使条件看起来与初始对象的子属性相对。

任何例子都很棒。

1 个答案:

答案 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>();