You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6升级后保存Decimal值遇OverflowException问题求助

解决.NET 6中EF Core保存Decimal时的OverflowException问题

针对升级到.NET 6后,保存整数部分为10位的Decimal值(如1234567890.12345)到数据库DECIMAL(35,17)列时出现的OverflowException: Conversion overflows错误,可通过以下步骤解决:

  • 显式配置实体属性的精度与小数位数
    .NET 6中EF Core对Decimal类型的映射校验更严格,默认配置可能无法匹配数据库的DECIMAL(35,17)规格,需手动指定:

    • 使用Fluent API(在DbContext的OnModelCreating方法中):
      protected override void OnModelCreating(ModelBuilder modelBuilder)
      {
          modelBuilder.Entity<目标实体类>()
              .Property(e => e.Value)
              .HasPrecision(35, 17);
      }
      
    • 使用数据注解:
      [Column(TypeName = "decimal(35,17)")]
      public decimal Value { get; set; }
      
  • 排查中间类型转换操作
    检查业务逻辑中是否存在将该Decimal值临时转换为整数类型(如int、long)再转回的操作,这类转换会因数值超出整数范围导致溢出,需直接保留Decimal类型进行处理。

  • 确认数据库驱动适配性
    确保使用的数据库驱动版本完全适配.NET 6,部分旧版本驱动可能在Decimal类型映射上存在兼容性问题,建议更新到最新稳定版。

内容的提问来源于stack exchange,提问作者Geethan Regunathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:20:38