【问题标题】:Multiple columns query - Nhibernate using QueryOver多列查询 - 使用 QueryOver 进行 Nhibernate
【发布时间】:2015-11-09 13:32:32
【问题描述】:

我将 NHibernate 与 oracle db 一起使用,并且我想进行一个选择许多列的查询。 例如,假设我有一个名为 Soldiers 的表,其中包含以下列:

身份证、名字和姓氏。

我想选择并返回所有士兵的名字和姓氏,所以在sql中会是这样的: SELECT FIRSTNAME, LASTNAME FROM SOLDIERS;

如何使用 QueryOver 在代码中执行此操作?

【问题讨论】:

  • 如何在不创建新类的情况下重新调整包含名字和姓氏的集合

标签: c# nhibernate oracle10g queryover


【解决方案1】:

要使用QueryOver必须映射类Soldier。这是必须。但是使用 QueryOver 来获取 FirstName 和 LastName 很容易:

Soldier soldier = null;
var list = session
    .QueryOver<Soldier>(() => soldier)
    .SelectList(l => l
        .Select(x => x.LastName).WithAlias(() => soldier.LastName)
        .Select(x => x.FirstName).WithAlias(() => soldier.FirstName)
    )
    .TransformUsing(Transformers.AliasToBean<Soldier>())
    // .Take(10) just 10
    .List<Soldier>();

Assert.IsTrue(list.First().FirstName != null);
Assert.IsTrue(list.First().LastName != null);

【讨论】:

  • 我遇到了一个异常,如果我错了,请纠正我,你正在从类型 Soldier 创建一个 QueryOver,你得到所有的士兵,然后你只取名字和姓氏,结果仍然是士兵名单?你能解释一下transformusing是做什么的吗?
  • 它只是将投影转换为原始实体。因为SelectList 是关于投影...nhibernate.info/doc/nh/en/index.html#queryqueryover-projections 必须转换
  • 谢谢你,这真的很有帮助,正是我一直在寻找的东西
  • 享受强大的 NHibernate,先生 ;) 它仍然是一个了不起的工具 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多