C# 多列查询-使用QueryOver的Nhibernate
我将NHibernate与oracle db一起使用,我想进行一个选择许多列的查询。 例如,假设我有一个名为士兵的表,表中有以下列: Id、名字和姓氏 我想选择并返回所有士兵的名字和姓氏,因此在sql中如下所示:C# 多列查询-使用QueryOver的Nhibernate,c#,nhibernate,oracle10g,queryover,C#,Nhibernate,Oracle10g,Queryover,我将NHibernate与oracle db一起使用,我想进行一个选择许多列的查询。 例如,假设我有一个名为士兵的表,表中有以下列: Id、名字和姓氏 我想选择并返回所有士兵的名字和姓氏,因此在sql中如下所示: 从士兵中选择名字、姓氏 如何使用QueryOver在代码中执行此操作?要使用QueryOver,必须有映射类士兵。这是必须的。但是,使用QueryOver可以很容易地获取所有的名字和姓氏: Soldier soldier = null; var list = session .
从士兵中选择名字、姓氏代码>
如何使用QueryOver在代码中执行此操作?要使用QueryOver
,必须有映射类士兵。这是必须的。但是,使用QueryOver可以很容易地获取所有的名字和姓氏:
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);
士兵=null;
变量列表=会话
.QueryOver(()=>士兵)
.选择列表(l=>l
.选择(x=>x.LastName)。使用别名(()=>soldier.LastName)
.Select(x=>x.FirstName).WithAlias(()=>soldier.FirstName)
)
.TransformUsing(Transformers.AliasToBean())
//.只要10分钟
.List();
Assert.IsTrue(list.First().FirstName!=null);
Assert.IsTrue(list.First().LastName!=null);
我如何重新运行一个包含名字和姓氏的集合而不创建新的classIm获取异常,请告诉我如果我错了,您正在从类型士兵创建一个查询版本,然后获取所有士兵,然后只获取名字和姓氏,结果仍然是士兵列表?你能解释一下transformusing在做什么吗?它只是把投影转换成原始的实体。因为SelectList
是关于投影的。。。这一点必须改变谢谢你这真的很有帮助而且正是我一直在寻找的它仍然是一个神奇的工具;)