首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Nhibernate中创建查询"sum“多个列

在NHibernate中创建查询"sum"多个列,可以使用投影查询(Projection)和聚合函数(Aggregate Function)来实现。

首先,投影查询可以用于选择需要查询的列。在NHibernate中,可以使用Projections类来创建投影查询。对于"sum"多个列的情况,可以使用Projections.ProjectionList来创建一个包含多个投影的列表。每个投影都可以使用Projections.Sum方法来计算对应列的总和。

以下是一个示例代码:

代码语言:csharp
复制
using NHibernate;
using NHibernate.Criterion;

// 创建一个投影列表
var projectionList = Projections.ProjectionList();

// 添加需要查询的列和对应的总和计算
projectionList.Add(Projections.Sum(Projections.Property("Column1")), "SumColumn1");
projectionList.Add(Projections.Sum(Projections.Property("Column2")), "SumColumn2");
projectionList.Add(Projections.Sum(Projections.Property("Column3")), "SumColumn3");

// 创建查询
var query = session.CreateCriteria<YourEntity>()
    .SetProjection(projectionList)
    .UniqueResult<object[]>();

// 获取查询结果
var sumColumn1 = (int)query[0];
var sumColumn2 = (int)query[1];
var sumColumn3 = (int)query[2];

在上述示例中,我们使用Projections.Property方法来指定需要查询的列,然后使用Projections.Sum方法计算每个列的总和。最后,通过UniqueResult方法获取查询结果,并将结果转换为对应的类型。

关于NHibernate的更多信息和使用方法,可以参考腾讯云的NHibernate产品介绍页面:NHibernate产品介绍

请注意,以上答案仅供参考,具体实现方式可能会根据具体情况而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • NHibernate的单表继承模式下通过父类Repository查询子类

    NHibernate中经常遇到继承与关系数据库的ORMapping的问题,我之前的一篇博客(http://www.cnblogs.com/studyzy/archive/2011/08/16/2140675...使用单表继承可以不用Join多个查询效率高,而且Domain Model的属性提示到父类或者下降到子类时,数据库模型不用更改。...NHibernate中经常会遇到通过父类的Repository来查询子类的情况,比如现在有一个抽象的Employee对象,下面有OfficeUser和Teacher两个具体的对象,这两个对象都有其特有的属性...,但是NHibernate会对其理解不一样,所以必须这么写,否则查询不出来。...以上是以最简单了例子说明了如果通过父类查询具体的子类的方法,实际项目中肯定比这个查询要复杂,但是只要记住了这三种查询的要点,结合其他条件就可以写出NHibernate能够理解的查询

    35120

    C# 数据操作系列 - 12 NHibernate的增删改查

    (7) /> schema: 数据库schema的名称 default-cascade:可选项,默认是none,一种默认的级联风格 auto-import:明确是否可以查询中使用非限定类名...assembly:指定映射对象所在的assembly,一般情况指的是项目名称 namespace:所在命名空间 default-access:可选的,默认是property,表示NHibernate的读取数据的策略...1.2.3 many-to-one Nhibernate,多对一的配置是一的一端,表示该类有一个外键导航。...首先,创建一个泛型模板类,并约束泛型为类: public class Repository where T: class { } 添加一个ISession属性,用来后续访问操作,并由构造方法赋值...(); } 其中 IQueryable是一个接口,表示这是一个可查询对象,通过Linq可以快捷的查询

    1.1K20

    NHibernate 缓存

    一级缓存 一级缓存就是 ISession 缓存, ISession 的生命周期内可用, 多个 ISession 之间不能共享缓存的对象, 通过 ISessionFactory 创建的 ISession... NHibernate 的参考文档, 对 ISession 的描述如下: A single-threaded, short-lived object representing a conversation..." usage="read-only" include="all"/> 这一句表示对实体类 HibernateTest.Models.Category 启用二级缓存, 实际项目中, 可以根据需要对多个实体类启用二级缓存...也可以实体类的 hbm 映射文件配置使用二级缓存, 不过 hibernate.cfg.xml 文件中统一配置是推荐的做法。...从二级缓存读/写数据 Refresh:向二级缓存写数据,想不从二级缓存读数据,通过配置文件设置 cache.use_minimal_puts从数据库读取数据时,强制二级缓存刷新 CacheRegion

    60311

    Java Spring 应用中使用 ASP.NET Core Identity 的数据库进行用户认证

    Java Spring 应用中使用 ASP.NET Core Identity 的数据库进行用户认证 使用 NHibernate 创建 Asp.Net Core 应用 ASP.NET Core Identity...根据 NHibernate.AspNetCore.Identity 的说明, 创建一个示例项目, 需要注意的问题主要有: 使用 NHibernate.AspNetCore.Identity 提供的 sql...Net Identity 创建用户/管理, Spring 应用使用用户名/密码进行登录), 创建了一个自定义的 PasswordHasher 作为示例, 将密码用 SHA-256 进行散存储, 仅作为参考..., 实际项目中需要进一步选择更加安全的加密存储; 创建测试用户 使用 Identity 创建用户 admin 的示例代码如下: var user = await userManager.FindByNameAsync....NET 应用创建的数据表, 并且使用相同的 SHA-256 对密码进行散存储。

    1.2K30

    C# 数据操作系列 - 11 NHibernate 配置和结构介绍

    前言 今天是NHibernate的第二篇内容,通过上一篇的内容,我们初步了解了NHibernate创建和使用。这一篇,我继续探索NHibernate背后的秘密。嗯,就是这样。 1....提供了一个通过主键检索对象和导航链接查询对象时的一级缓存。也就是EF Core的导航属性。...它们可能只是一些普通的POCO,仅仅是与ISession关联起来了。只要ISession关闭了,这些对象就可以被分离出来然后可以应用层的任意地方使用。...一个ISession可能会开启多个事务,Transaction scopes may be used instead(原话是这个,大意是可以改用事务作用域)。...实例状态 NHibernate,一个可持久化的对象有三种不同的状态,依据与持久化上下文之间的关系不同,其中ISession就是一个持久化上下文。

    1.2K20

    Nhibernate_nhibernate与ef区别

    开发过程 HNibernate将会有一些工具帮助你,如:生成schema,根据映射文件(Mapping file)生成类,并更新schema(一个新开发者的建议).然而,本文档,前提是你已经手动的数据库的创建喝...在数据库创建把.Net类持久化的对应表. 2. 创建需要被持久化的.Net类. 3. 创建映射文件,以告诉NH怎样持久化这些类的属性. 4....步骤4:创建数据库配置文件 目前为止,我们还没有告诉NH到哪儿去找数据库.最直接的方法就是在你程序的配置文件给NH一个部分,就是这样: <?...代码里面使用NHibernate是很简单的事情: 1. 创建一个Configuration对象. 2....创建一个Session连接到你设定的数据库. 4. 载入,保存和查询你的对象. 5.

    59330

    NHibernate 缓存

    一级缓存 一级缓存就是 ISession 缓存, ISession 的生命周期内可用, 多个 ISession 之间不能共享缓存的对象, 通过 ISessionFactory 创建的 ISession... NHibernate 的参考文档, 对 ISession 的描述如下: A single-threaded, short-lived object representing a conversation..." usage="read-only" include="all"/> 这一句表示对实体类 HibernateTest.Models.Category 启用二级缓存, 实际项目中, 可以根据需要对多个实体类启用二级缓存...也可以实体类的 hbm 映射文件配置使用二级缓存, 不过 hibernate.cfg.xml 文件中统一配置是推荐的做法。...以上是项目中用到的二级缓存相关知识的整理, 肯定不完整, NHibernate 的缓存还有更多的地方需要挖掘。

    44310

    SQL Server字符串左匹配

    最常见的一个例子就是搜索框,用户输入了一部分关键字,系统可以通过用户的输入进行左匹配,找出相关的结果列出来。...假设我们现在有个表YCMRSALE,其中有个字段MATNR存储了料号信息,如果我们要从这个表查询出以AB开头的料号,如果使用NHibernate,那么我们常用的写法有: //QueryOver的写法...同样以YCMRSALE表举例,如果我们有另一表matnr,该表的matnr存储了不完整的料号,现在需要将两个表join起来,使用matnr进行左匹配,那么我们的SQL可以写成: select *...如果我们要改写成like的形式,那么就需要对matnr表的matnr进行处理,将特殊字符进行替换,将~%_[]这几个字符都替换掉。...end else begin set @result+=@c; end set @i+=1; end return @result end 然后查询调用这个自定义的函数即可

    72310

    NHibernate总结

    NHibernate不仅仅管理.NET 类到数据库表的映射(包括.NET 数据类型到SQL 数据类型的映射),还提供数据查询和获取数据的方法,大幅度减少我们开发时人工使用SQL和ADO.NET处理数据的时间...,其中People实体类的字段要设置为virtual。每个文件的详细代码在下面介绍 (2)     NH.Data层引用Nhibernate相关的DLL ?...首先,我们要从ISessionFactory获取一个ISession(NHibernate的工作单元)。ISessionFactory可以创建并打开新的Session。...我们可以使用GoF23的单例(Singleton)模式程序创建ISessionFactory。...这个实例我编写了一个辅助类NHibernateHelper 用于创建ISessionFactory并配置ISessionFactory和打开一个新的Session单线程的方法,之后每个数据操作类可以使用这个辅助类创建

    92540

    NHibernate教程

    一、NHibernate简介 今日的企业环境,把面向对象的软件和关系数据库一起使用可能是相当麻烦、浪费时间的。NHibernate是一个面向.Net环境的对象/关系数据库映射工具。...由此可见,NHibernate不仅仅管理.Net类到数据库表的映射,还提供数据查询和获取数据的方法。因此采用NHibernate,可以大幅度减少开发时人工使用SQL处理数据的时间。...配置NHibernate (1)NHibernate的配置文件有两种:桌面应用程序(WinForm)为App.config,在网页应用程序(WebForm)为web.config。...(1) 声明NHibernate的Factory private static Configuration mCfg=new Configuration(); private static...NHibernate.ISessionFactory SessionFactory=null; (2) 系统初始化的时候加载XML,并创建Factory mCfg.AddXmlFile(

    36910

    C#——Nhibernate探索

    为了保险起见,我们上网查询一下。 查询结果: 查询结果是,他们俩是【文件智能提示功能】用的。...调查结果: 对象与数据库的映射是保存在XML文件的,于是我配置XML映射文件如下。 该XML文件的属性,要求设置其生成操作为【嵌入的资源】。 但我怕它丢失,还给他设置了始终复制的属性。...这里测试了下,貌似不改名不好使,配置文件内容如下 【PS:我始终没搞懂,XML的CFG代表什么意思。】 <?xml version="1.0" encoding="utf-8"?...这句话的意思是,映射我创建的那个类库。 我推断,Nherbinate是读这个配置文件,然后到这个程序集里,反射查询那些poco对象。...为什么说是探索之旅呢,因为,我也是首次配置Nhibernate,我平常更多的是使用Entity Framework。 文中使用了一些推断,猜测的词语。那是因为,真的是推断的。

    49430

    盘点 .NET 比较流行的开源的ORM框架

    初期开发过程吸取了NBear与MySoft的一些精华并加入新思想,之后参考EF Lambda语法进行大量扩展。 经过数十个版本的更新迭代发布全新v2.0版本,支持动态/表、分库/分表等。...开源地址:https://github.com/dotnet/ef6 六、NHibernate(国外) NHibernate 是一个成熟的开源对象关系映射器,适用于 .NET 框架。...开源地址:https://github.com/nhibernate/nhibernate-core 七、ServiceStack/ServiceStack.OrmLite(国外) 简单的 .NET 的快速...更好的参数替换支持,包括从对象属性获取命名参数。 通过使用 DynamicMethod 生成消除 Linq 和快速属性分配来获得出色的性能。 查询语言是好的 ole SQL。...(V5) 用于记录异常、安装值转换器和将映射到没有属性的属性的挂钩。

    4.1K42

    使用VS2015和Nhibernate实现与MySql数据库连接,实现增删改查操作

    ,MySQL-FRONT ,Connector/Net(选择.Net&Mono) Nhibernate包可以VS2015下载 ,对MySql操作,我用的是MySQL-FRONT,注意要想实现和数据库的链接...先写一个简单的给你定义的数据库添加一条元素的代码:(不使用Nhibernate的) 前提:先把该用的dll文件,添加到引用里面去不然,会连接不成功,之前下载的Connector/Net(选择.Net&...不要少任何一个,好了然后我还是利用刚才创建的数据库,先完善一下表,完善和如下图 ?...然后我们工程下面新建两个文件夹:Model文件夹用来存放数据库表类和映射类,还有一个Manger类用来存放对数据库执行增删改查操作的类。...Nhibernate帮助类,使用Nhibernate连接数据库,用来得到sessionFactory,然后使用sessionFactory里面的session去操作数据库,代码如下: using System

    1.4K30
    领券