使用nhibernate加入两个表

时间:2013-07-04 09:23:00

标签: c# nhibernate

我有两张桌子:

Product(ProductID, Detail, ProductTypeID) 

ProductType(ProductTypeID, Detail).

我希望获得ProductType的列表,ProductTypeID是使用nhibernate的产品表。有大量的产品类型。

1 个答案:

答案 0 :(得分:0)

在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.