当前位置:  开发笔记 > 编程语言 > 正文

如何使用NHibernate中的Criteria API进行自定义投影?

如何解决《如何使用NHibernate中的CriteriaAPI进行自定义投影?》经验,为你挑选了1个好方法。

使用HQL,我可以像这样使用动态实例化:

select new ItemRow(item.Id, item.Description, bid.Amount)
from Item item join item.Bids bid
where bid.Amount > 100

现在我需要使用Criteria API动态创建我的查询.我如何获得与使用HQL获得的结果相同的结果,但使用Criteria API?

谢谢.



1> Stefan Stein..:

您可以使用AliasToBean结果转换器.(Doc 1.2)它将每个投影分配给同名的财产.

session.CreateCriteria(typeof(Item), "item")
  .CreateCriteria("Bids", "bid")
  .SetProjection(Projections.ProjectionList()
    .Add(Projections.Property("item.Id"), "Id" )
    .Add(Projections.Property("item.Description"), "Description" )
    .Add(Projections.Property("bid.Amount"), "Amount" ))
  .Add(Expression.Gt("bid.Amount", 100))
  .SetResultTransformer(Transformers.AliasToBean(typeof(ItemRow)))
  .List();

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有