什么是NHibernate中的投影?

时间:2011-01-20 12:16:44

标签: .net nhibernate projection

我有一个项目,我正在使用NHibernate来处理数据库的绑定。到目前为止,我主要在查询时使用了基础知识。现在我正在努力解决一个更困难的问题,我注意到NHibernate的新部分。特别是我对SetProjection感到好奇,这在查询时似乎很重要。

什么是投影,我通常如何使用它?我假设投影是数据库的一般术语,所以欢迎您提供更一般的答案..

2 个答案:

答案 0 :(得分:28)

Antoine所说的预测是转型。在查询方面,它是:

SELECT *PROJECTION* FROM Table

*PROJECTION*是数据转换的表达式。

示例:

SELECT * FROM ORDER

Criteria等价物将是:

List orders = session.createCriteria(Order.class).list();

此处没有投影,我们在没有转换的情况下获取数据。如果我们想要一个:

SELECT NAME FROM PRODUCT

在这里,Projection类开始发挥作用。上述查询可以重写为Criteria查询:

List products=session.createCriteria(Product.class)
     .setProjection(Projection.property(\"name\"))
     .list();

因此,我们将所有行投影到单个项目:name字段。

还有其他预测:Projection.rowCount()例如(COUNT(*)

答案 1 :(得分:6)

我不知道NHibernate,但一般来说,投影是将一个集合转换为另一个集合。在SQL中,它表示为SELECT。