【发布时间】:2014-06-09 06:18:55
【问题描述】:
如何将此 SQL 查询发送到 Nhibernate?
SELECT Customer.name
FROM Company INNER JOIN Customer ON Company.CompanyId = Customer.CompanyId
where CompanyId = 2
【问题讨论】:
如何将此 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<Customer>();
var custList = from cust in CustomerList where cust.CompanyId.CompanyId == 2 select cust;
【讨论】:
假设您有一家代表 ID 为 2 的公司的公司。您可以使用 ICriterion:
return this.GetSession().CreateCriteria<Customer>()
.Add(Restrictions.Eq("Company", company))
.List<Customer>();
这将返回与公司关联的客户列表(假设客户类的属性称为“公司”)。
要获取名称,只需执行以下操作:
customers.Select(c => c.name);
我建议采用这种方法,因为您知道所有客户都将被加载到一个 db hit 而不是一次懒惰地加载一个。
【讨论】: