使用nhibernate连接两张桌子

本文关键字:两张 nhibernate 连接 使用 | 更新日期: 2023-09-27 18:21:12

我有两个表:

Product(ProductID, Detail, ProductTypeID) 

ProductType(ProductTypeID, Detail).

我想得到一个ProductType的列表,其中ProductTypeID是使用nhibernate的乘积表。产品种类繁多。

使用nhibernate连接两张桌子

在NHibernate中,我们针对对象模型而不是表编写查询。由于你没有描述你的对象模型,我根据你的表的外观做了一个简单的假设。

使用NHibernate Linq的一个可能的查询如下:

// Notice no ToList(), since we want it as a subquery.
var usedProductTypesIdSubquery =
    session.Query<Product>
           .Select(product => product.ProductType.Id);
var usedProductTypes = 
    session.Query<ProductType>
           .Where(productType => usedProductTypesIdSubquery.Contains(productType.Id)
           .ToList();
// Because we are using a subquery, and contains (the 'IN' clause in SQL), the
// resulting list usedProductTypes will not contain duplicates.