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

为什么fluent Hibernate .Sum在空表上使用时会抛出InvalidOperationException?

在空表上使用fluent Hibernate的.Sum方法时抛出InvalidOperationException的原因是因为.Sum方法在执行时需要对表中的数据进行求和操作,而在空表中没有任何数据可供求和,因此会抛出异常。

Fluent Hibernate是一个用于简化Hibernate配置和操作的开源框架,它提供了一种流畅的API来定义实体映射和查询。.Sum方法是Fluent Hibernate中用于对查询结果进行求和的方法,它可以对指定的属性进行求和操作。

当我们在空表上使用.Sum方法时,由于没有任何数据可供求和,所以会抛出InvalidOperationException异常。这是因为在执行求和操作时,Fluent Hibernate会尝试访问表中的数据,但由于表为空,无法获取到任何数据,因此抛出异常。

为了避免这个异常,我们可以在使用.Sum方法之前先判断表中是否有数据。可以通过查询表的记录数或者使用其他条件判断方法来确定表中是否有数据可供求和。如果表中没有数据,则可以选择跳过求和操作或者给出一个默认值作为求和结果。

需要注意的是,以上答案是基于一般情况下的理解和推测,具体情况可能还需要根据实际代码和环境进行分析。

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

相关·内容

Fluent NHibernate之旅二--Entity Mapping

本节内容: 简单实体映射 使用自定义类型映射实体属性 NHibernate的实体映射(Entity Mapping)做的非常好,虽然不是完美,但一些我们经常使用的,基本已经都支持了,而且配置也相对比较简单...传统方式:传统方式使用xml文件进行映射,配置文件如下: > expression):与Id类似,对应NHibernate中的property,我这里只是简单的映射,还有很多特性,今后的教程中会慢慢使用...对于我这种新手来说,Fluent更适合我,因为我可以用它来进行学习NHibernate。 映射做好了,接下来我们NHibernate中把映射加到配置中。...二、使用自定义类型映射实体属性 NHibernate支持我们用自定义的类型来映射属性,但因为我是初学,我真的不会,当然我在网上找到了相关的资料,在此也不多说,就说说Fluent的方式吧,我映射自定义属性的时候

1K90

Fluent NHibernate之旅

ORM大家都非常熟悉了吧,我相信也有很多朋友正在用自己或者一些公开的框架,而最常用而且强大的,非Hibernate了(Net中为NHibernate),网上的文档非常多,不过博客园中,介绍NHibernate...3、建立一个数据库(我们使用MSSql2005),数据库名为:MyNHibernate,这个数据库为信任连接。...下面我们代码中创建一个SessionFactory,NHibernate建议我们一个应用程序中使用一个数据库一个SessionFactory,这里我们用单数据库,代码如下: public static...两者之间都各有长短,或许你还没有体会到Fluent的强大,日后的Mappings时,你会慢慢了解为什么他会叫Fluent。...传统方式对于一些经常使用的程序员来说非常简便,加上代码生成工具,使用起来也会游刃有余,但对于新手来说,Fluent绝对是一个好帮手。

1.1K60
  • WPF 解决 ObservableCollection 提示 Cannot change ObservableCollection during a CollectionChanged event 异

    本文告诉大家使用 ObservableCollection 时,抛出 InvalidOperationException 异常,提示 Cannot change ObservableCollection...里,而且此异常可以除 WPF 的其他框架,比如控制台或者 UWP 复现 想要解决此问题,还请先了解一下此异常抛出的原因 ObservableCollection 的设计,是可以了解列表的变更...,将会抛出 InvalidOperationException 异常,提示 Cannot change ObservableCollection during a CollectionChanged event...那为什么只加等 1 次时不抛出呢?...那是因为既然只有一次,那改不改都影响不了当前的进入的方法的状态 由于 CollectionChanged 事件加等的次数决定了 InvalidOperationException 是否抛出,从而让一些开发者拿到错误的结论

    1.1K10

    ASP.NET Core中GetService()和GetRequiredService()之间的区别

    如果没有serviceType类型的服务,则抛出一个InvalidOperationException异常。 因此,当请求的实例serviceType可用时,两种方法的行为都相同。...如果服务不可用,则使用GetRequiredService()会立即抛出异常。如果您使用GetService(),那么您需要在调用代码中检查是否为null,并且通常需要抛出异常。...那个检查代码需要在任何地方重复。 失败很快。如果您在使用GetService()时忘记检查是否为null,那么稍后您的程序可能会以NullReferenceException结束。...StructureMap和其他一些第三方容器的一大好处是,它们能够提供详细的异常消息,说明为什么找不到服务。...如果服务不可用(即它没有注册),则GetService()返回null,而GetRequiredService()抛出一个InvalidOperationException

    1.4K60

    如何使用Fluent Nhibernate中的Automapping进行OR Mapping映射

    最早的项目中,我们使用了最传统的XML配置文件的方式编写映射关系,但是这样太麻烦,每次修改class和时都要去修改对应的XML文件,而且还容易出错,一定有疏忽遗漏的地方,还不容易找出错误,所以第二个项目中...,我们使用Fluent NHibernate的Mapping方式代替XML配置。...使用Fluent NHibernate的最大好处是降低了出错的机会,因为Fluent Nhibernate的配置是使用C#来编写,可以智能感知,而且还能编译,不像原始的XML配置,写错了都不知道。...更多的修改意味着更多的风险,为了减少这方面的风险,同时为了减少配置的工作量,所以最新的项目中采用了Fluent NHibernate中的Automapping。...HIBERNATE_UNIQUE_KEY存储每个的流水。

    1.1K10

    WPF dotnet 6 开启 PM v2 的 DPI 感知 导致触摸线程访问 UI 属性抛异常

    带触摸屏的应用,应用运行过程中,切换屏幕的 DPI 之后,触摸过程有概率触发在触摸线程访问 UI 的依赖属性,触摸线程抛出异常炸掉应用 条件 必须同时满足以下条件: dotnet 6: dotnet...为什么使用 6.0.4-alpha05-FixTouch01 版本是能一定复现,还请看下面的原理部分 原理 为什么使用 6.0.4-alpha05-FixTouch01 版本是能一定复现,那是因为我改了触摸模块...为什么有触摸问题?...触摸线程收到时,还没有找到命中的元素,这就导致了拿到的值,无法处理当前命中到的元素所在的窗口,从而无法了解当前触摸点的 DPI 的参数。...由于 Rob LaDuca 大佬修复 per-monitor DPI 时,没有考虑到 StylusPlugIn 比 UI 线程更快进入此函数,首次触摸时,让 PresentationSource 参数为

    65000

    你有没有使用过这些编程骚操作(一)- Lombok(Part B)

    = -1){ fileOutputStream.write(r); } } } 添加了@SneakyThrows注解后,无须在方法抛出异常,程序也不会报错...@Accessor注解包含了三个属性分别是fluent、chain和prefix chain 属性 entity包下新建Porsche实体类,chain 属性可以设置为true或者false @Data...属性 entity包下新建Tesla实体类,fluent属性可以设置true或者false @Data @Accessors(fluent = true) public class Tesla {...Data生成的getter/setter方法的基础,将指定的前缀去除 七、Lombok中 @Slf4j 日志注解使用 @Slf4j可以简化日志的引入,用于代替以下这段代码 private static...还生成了一个clearListFields方法,当集合不为的时候清除集合 调用build方法的时候会判断集合是否为,集合为的时候会创建一个的list赋值给集合属性,如果只有一个元素的时候,

    41320

    Core官方DI解析(3)-ServiceCallSite.md

    一篇说过整个DI框架中IServiceProviderEngine是核心,但是如果直接看IServiceProviderEngine派生类其实看不出也没什么东西,因为这个类型其实都是调用的其它对象方法...,Engine类中会注册此类实例,然后获取子类容器使用 ​ ​ 这六个派生类中ConstantCallSite,IEnumerableCallSite,ServiceProviderCallSite和...ServiceDescriptor,而_items**则是除去第一个其它的ServiceDescriptor集合,我没看懂微软为什么要这么干 **_item**:代表此注册服务的第一个ServiceDescriptor...如果此类型只有一个构造器,那么就使用此构造器当做最优构造器进行实例化, 如果此类型具有多个构造器,那么就选出最优构造器 如果没有找到最优构造器,就抛出异常,存在最优构造器就以此构造器实例化ConstructorCallSite...()中递归调用GetCallSite()获取每一个参数对应的ServiceCallSite,方法中可以看到如果从GetCallSite()中未获取到对应的实例对象但是该参数具有默认参数,那么就使用默认参数

    1.2K10

    Core官方DI解析(3)-ServiceCallSite

    一篇说过整个DI框架中IServiceProviderEngine是核心,但是如果直接看IServiceProviderEngine派生类其实看不出也没什么东西,因为这个类型其实都是调用的其它对象方法...,**Engine**类中会注册此类实例,然后获取子类容器使用 这六个派生类中`ConstantCallSite`,`IEnumerableCallSite`,`ServiceProviderCallSite...\*\_item\*\*属性代表相同注册服务的第一个`ServiceDescriptor`,而\*\*\_items\*\*则是除去第一个其它的`ServiceDescriptor`集合,我没看懂微软为什么要这么干...*和\*\*DefaultSlot\*\*进行,这也就是为什么总是会获取最后一个服务实例的原因 private ServiceCallSite TryCreateExact(Type serviceType...如果此类型只有一个构造器,那么就使用此构造器当做最优构造器进行实例化, 如果此类型具有多个构造器,那么就选出最优构造器 如果没有找到最优构造器,就抛出异常,存在最优构造器就以此构造器实例化ConstructorCallSite

    83920

    求求你别在用IF ELSE校验参数了

    2.为什么使用Hibernate Validator 提高代码整洁度; 验证逻辑与业务逻辑之间进行了分离,降低了程序耦合度; 统一且规范的验证方式,无需你再次编写重复的验证代码; 你将更专注于你的业务,...@Valid注解即可(校验对静态变量不生效),使用 @Valid 注解的参数后可以紧跟着一个 BindingResult 类型的参数,用于获取校验结果(将校验结果封装在BingdingResult对象中...实际我们可以用到Hibernate-Validator的分组功能,达到对不同场景做出不同的校验逻辑,减少DTO对象的创建。...比如一个User对象,新增的时候不需要检验id(系统生成),修改的时候需要检验id属性,要想复用Class,就可以使用Hibernate Validator的分组。...public interface UpdateUser{} } 添加用户:需要校验的对象前面加@Validated注解(不能使用@Valid注解),并配置分组class,此时AddUser的分组校验规则生效

    1.9K10

    求求你别在用IF ELSE校验参数了

    2.为什么使用Hibernate Validator 提高代码整洁度; 验证逻辑与业务逻辑之间进行了分离,降低了程序耦合度; 统一且规范的验证方式,无需你再次编写重复的验证代码; 你将更专注于你的业务,...@Valid注解即可(校验对静态变量不生效),使用 @Valid 注解的参数后可以紧跟着一个 BindingResult 类型的参数,用于获取校验结果(将校验结果封装在BingdingResult对象中...实际我们可以用到Hibernate-Validator的分组功能,达到对不同场景做出不同的校验逻辑,减少DTO对象的创建。...比如一个User对象,新增的时候不需要检验id(系统生成),修改的时候需要检验id属性,要想复用Class,就可以使用Hibernate Validator的分组。...public interface UpdateUser{} } 添加用户:需要校验的对象前面加@Validated注解(不能使用@Valid注解),并配置分组class,此时AddUser的分组校验规则生效

    1.7K20

    应该抛出什么异常?不应该抛出什么异常?(.NETC#)

    ,不支持) PlatformNotSupportedException 表示在此平台下不支持(如果程序跨平台的话) 实现错误 NullReferenceException 试图引用上执行某些方法...而要确保非 null,使用者必须使用其它方式隐式初始化这个字段,那么应该抛出 InvalidOperationException,告诉使用者应该先调用其他的某个方法。...写这段代码的人并没有调查 sender 不是 Button 类型的原因,到底是因为 Grid 监听了路由事件的 Click,还是因为多个控件都把事件处理函数设为了这个方法。...程序中的异常 异常处理中,每一位开发者应该从根源自己的代码中消灭“实现异常”(而不是“逃避”),同时使用异常”的帮助下正确调用其他方法,那么代码中将只剩下“环境异常”(和小部分性能导致的“实现异常...此时,开发者们将有更多的精力关注“解决的具体业务”上面,而不是不停地解决编码的 BUG。 特别的,“实现异常”可以被单元测试进行有效的检测。

    1.7K20

    阿里华为等大厂架构师如何解决指针问题

    创建时间最好让DB设置为当前时间,不用程序控制,可通过字段设置columnDefinition实现。 数据库字段允许保存null 会进一步增加出错的可能性和复杂度。...使用Hibernate的**@DynamicUpdate**注解实现更新SQL的动态生成,实现只更新修改后的字段,不过需要先查询一次实体,让Hibernate可以“跟踪”实体属性的当前状态,以确保有效。...然后,由于DTO中已经巧妙使用了Optional来区分客户端不传值和传null值,那么业务逻辑实现就可以按照客户端的意图来分别实现逻辑。...对于年龄,我们认为如果客户端希望更新年龄就必须传一个有效的年龄,年龄不存在重置操作,可以使用Optional的orElseThrow方法值为的时候抛出IllegalArgumentException...为测试使用Optional是否可以有效区分JSON中没传属性还是传了null,JSON中设个null的age,结果是正确得到了年龄不能为的错误提示: curl -H "Content-Type:application

    1.2K30

    求求你别在用IF ELSE校验参数了

    2.为什么使用Hibernate Validator 提高代码整洁度; 验证逻辑与业务逻辑之间进行了分离,降低了程序耦合度; 统一且规范的验证方式,无需你再次编写重复的验证代码; 你将更专注于你的业务,...@Valid注解即可(校验对静态变量不生效),使用 @Valid 注解的参数后可以紧跟着一个 BindingResult 类型的参数,用于获取校验结果(将校验结果封装在BingdingResult对象中...实际我们可以用到Hibernate-Validator的分组功能,达到对不同场景做出不同的校验逻辑,减少DTO对象的创建。...比如一个User对象,新增的时候不需要检验id(系统生成),修改的时候需要检验id属性,要想复用Class,就可以使用Hibernate Validator的分组。...public interface UpdateUser{} } 添加用户:需要校验的对象前面加@Validated注解(不能使用@Valid注解),并配置分组class,此时AddUser的分组校验规则生效

    1.8K20

    Validator,就来这一篇吧

    2.为什么使用Hibernate Validator 提高代码整洁度; 验证逻辑与业务逻辑之间进行了分离,降低了程序耦合度; 统一且规范的验证方式,无需你再次编写重复的验证代码; 你将更专注于你的业务,...@Valid注解即可(校验对静态变量不生效),使用 @Valid 注解的参数后可以紧跟着一个 BindingResult 类型的参数,用于获取校验结果(将校验结果封装在BingdingResult对象中...实际我们可以用到Hibernate-Validator的分组功能,达到对不同场景做出不同的校验逻辑,减少DTO对象的创建。...比如一个User对象,新增的时候不需要检验id(系统生成),修改的时候需要检验id属性,要想复用Class,就可以使用Hibernate Validator的分组。...public interface UpdateUser{} } 添加用户:需要校验的对象前面加@Validated注解(不能使用@Valid注解),并配置分组class,此时AddUser的分组校验规则生效

    2.7K10

    SpringBoot中处理校验逻辑的两种方式,真的很机智!

    最近正在开发一个知识库学习网站编程猫,需要对请求参数进行校验,比如说非啊、长度限制啊等等,可选的解决方案有两种: 一种是用 Hibernate Validator 来处理 一种是用全局异常来处理 两种方式...第二步,参考文档页点击「依赖的版本」。 第三步,依赖版本页就可以查看到所有的依赖了,包括版本号。...第一步,需要验证的字段加上 Hibernate Validator 提供的校验注解。...二、全局异常处理 使用全局异常处理的优点就是比较灵活,可以处理比较复杂的逻辑校验,在校验失败的时候直接抛出异常,然后进行捕获处理就可以了。 第一步,新建一个自定义异常类 ApiException。...第四步,需要校验的地方通过 Asserts 类抛出异常 ApiException。还拿用户登录这个接口来说明吧。

    83520

    从EFCore上下文的使用到深入剖析DI的生命周期最后实现自动属性注入

    使用EF的话不可避免要和DbContext打交道,Core中的常规用法一般是:创建一个XXXContext类继承自DbContext,实现一个拥有DbContextOptions参数的构造器,启动类...StartUp中的ConfigureServices方法里调用IServiceCollection的扩展方法AddDbContext,把上下文注入到DI容器中,然后使用的地方通过构造函数的参数获取实例...); return realizedService.Invoke(serviceProviderEngineScope); } 可以看到,_callback在为的情况下是不会做验证的...为什么危险?到底什么是root provider?那就要从原生DI的生命周期说起。我们知道,DI容器被封装成一个IServiceProvider对象,服务都是从这里来获取。...分别查看各自的方法摘要可以看到,通过GetService获取一个没有注册的服务时会返回null,而GetRequiredService会抛出一个InvalidOperationException,仅此而已

    1.2K20
    领券