什么是NHibernate中的投影?

sti*_*k81 25 .net nhibernate projection

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

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

And*_*rey 29

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

SELECT *PROJECTION* FROM Table
Run Code Online (Sandbox Code Playgroud)

*PROJECTION* 是数据转换的表达.

例:

SELECT * FROM ORDER
Run Code Online (Sandbox Code Playgroud)

标准等价物将是:

List orders = session.createCriteria(Order.class).list();
Run Code Online (Sandbox Code Playgroud)

这里没有预测,我们没有转换就采取数据.如果我们想要一个:

SELECT NAME FROM PRODUCT
Run Code Online (Sandbox Code Playgroud)

这里,Projection类开始发挥作用.上述查询可以重写为Criteria查询,如下所示:

List products=session.createCriteria(Product.class)
     .setProjection(Projection.property(\"name\"))
     .list();
Run Code Online (Sandbox Code Playgroud)

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

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

  • 至于你答案的第一行,我从google =)的第一个结果到这里 (3认同)

Ant*_*bry 6

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