建立nhibernate的标准

Ada*_*dam 3 asp.net nhibernate search criteria

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

举个例子...

如果我有

tblUser
pk int    ID
   int    CompanyID
   string Name
Run Code Online (Sandbox Code Playgroud)

tblCompany
pk int     ID
   string CompanyName
Run Code Online (Sandbox Code Playgroud)

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

任何例子都很棒.

Chr*_*ers 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>();
Run Code Online (Sandbox Code Playgroud)

此外,对于别名存在对嵌套属性的相同限制,因此如果您有用户 - >公司 - >所有者,则需要两个别名

.CreateAlias("Company", "c")
.CreateAlias("c.Owner", "o")
Run Code Online (Sandbox Code Playgroud)

此外,如果您希望为整个查询使用别名,则可以在创建条件时为根实体提供别名.

session.CreateCriteria<User>("u")
    .CreateAlias("u.Company", "c")
    .Add(Restrictions.Eq("c.Name", companyName))
    .List<User>();
Run Code Online (Sandbox Code Playgroud)