参数值'163753323027.987000000'超出范围

本文关键字:范围 987000000 参数 163753323027 | 更新日期: 2023-09-27 18:31:40

我在尝试通过实体框架在数据库中保存值时收到以下异常

InnerException: An error occurred while updating the entries. See the inner exception for details.
InnerException -> InnerException: Parameter value '163753323027.987000000' is out of range.

我尝试了提供的所有解决方案。但仍然无法解决问题。我正在使用EntityFramework,SQL Server。这不是代码优先。

在我的表格中,我有一列

ActualHydPressureDropPipe decimal(30, 10)

应用程序尝试存储在数据库中的值163753323027.987000000

我无法尝试此处提供的答案,因为我没有实体类型配置类。

我尝试了这里给出的答案

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
  modelBuilder.Entity<Mud_Volumes>().Property(x => x.ActualHydPressureDropPipe).HasPrecision(30, 10);
  base.OnModelCreating(modelBuilder);
}

这也行不通。我不确定为什么控件没有进入上述方法。可能是因为这不是代码优先。

我签入了我的 edmx 我有

<Property Type="Decimal" Name="ActualHydPressureDropPipe" Nullable="false" Precision="30" Scale="10" />

请指教。

参数值'163753323027.987000000'超出范围

我什么都试过了。我尝试增加精度和范围。但问题仍然存在。有趣的是,一旦我重新启动我的Visual Studio,它就会自动解决。

奇怪。但有时有些事情只需要重新启动即可自行修复。

我也有类似的问题。写入小数(18,0)时,我的错误消息是:参数值"0.7880523731587561374795417349"超出范围。

我尝试了上面的解决方案重新启动VS,但没有运气。但是,添加舍入解决了我的问题:

Math.Round((0.7880523731587561374795417349m), 4)

有趣的是,这奏效了,即使实际上十进制(18,0)也不存储小数点后的任何数字。它应该是十进制(18,4)才能正确保存四舍五入的数字。