对Nhibernate进行SQL查询

如何将此SQL查询提供给Nhibernate?

SELECT Customer.name FROM Company INNER JOIN Customer ON Company.CompanyId = Customer.CompanyId where CompanyId = 2 

如果您熟悉LINQ,它非常简单,
您必须直接访问作为实体的参考文件。 并且您将获得该实体的属性,依此类推,您可以访问第n个节点。

Nhibernate将把参考字段作为实体来处理..

  //Here is the sample this may work //CustomerList is a nhibernate entity list. //CompanyId is also an entity which is a reference to the CompanyId of Company table. // you will get the list of customers based on condition. var CustomerList = new List(); var custList = from cust in CustomerList where cust.CompanyId.CompanyId == 2 select cust; 

假设您有一家公司代表ID为2的公司。您可以使用ICriterion:

 return this.GetSession().CreateCriteria() .Add(Restrictions.Eq("Company", company)) .List(); 

这将返回与公司关联的客户列表(假设Customer类上的属性称为“公司”)。

要获得名称,请执行以下操作:

 customers.Select(c => c.name); 

我建议使用这种方法,因为您知道所有客户都将被加载到一个数据库命中,而不是一次一个地加载它们。