多列查询-使用QueryOver的Nhibernate

本文关键字:QueryOver Nhibernate 使用 查询 | 更新日期: 2023-09-27 18:21:16

我正在将NHibernate与oracledb一起使用,我想创建一个选择许多列的查询。例如,假设我有一个名为Soldiers的表,其中包含以下列:

身份证、名字和姓氏。

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

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

多列查询-使用QueryOver的Nhibernate

要使用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);