3

我想知道是否有人可以帮助提供 nhibernate 的示例标准。我想我已经对相当基本的事情有所了解,比如在给定表中查找字段与某个值匹配的记录等。我目前遇到的问题是你有一个表和另一个表的外键,并且试图根据第二个表中的某个字段从第一个表中查找行。

举个例子...

如果我有

tblUser
pk int    ID
   int    CompanyID
   string Name

tblCompany
pk int     ID
   string CompanyName

我将如何建立标准来检索属于具有特定名称的公司的所有用户?我想我了解如何构建适当的映射文件/对象,我只是不知道如何使标准与初始对象的子属性相匹配。

任何例子都会很棒。

4

1 回答 1

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 -> Company -> Owner 您将需要两个别名

.CreateAlias("Company", "c")
.CreateAlias("c.Owner", "o")

此外,如果您更喜欢为整个查询使用别名,您可以在创建条件时也为根实体指定别名。

session.CreateCriteria<User>("u")
    .CreateAlias("u.Company", "c")
    .Add(Restrictions.Eq("c.Name", companyName))
    .List<User>();
于 2009-09-04T18:23:40.297 回答