【发布时间】:2019-12-10 06:06:54
【问题描述】:
我有一个 .NET Core 2.0 应用程序,它从 API 中提取数据并尝试将其保存到表 cog_detail(使用模型 CogDetail)
foreach (Models.Cog.CogDetail cd in cdList)
{
_context.CogDetail.Add(cd);
_context.SaveChanges();
}
其中一个值称为 Lmn,当我检查 cd 中的值时显示为 2.60895M(我在 _context.CogDetail.Add(cd); 上有一个断点)
但是一旦保存,它就会在数据库中保存为 3
SQL Server 表的列为 decimal(18, 0), null
我的上下文是这样的:
modelBuilder.Entity<Models.Cog.CogDetail>(entity =>
{
entity.HasKey(e => new { e.Test_ID, e.TCode }).HasName("PK_cog_detail");
entity.ToTable("cog_detail", "cog");
entity.Property(e => e.Test_ID)
.HasColumnName("test_id")
.HasColumnType("int");
entity.Property(e => e.TCode)
.HasColumnName("tcode")
.HasColumnType("varchar(10)");
entity.Property(e => e.Lmn)
.HasColumnName("lmn")
.HasColumnType("decimal(18, 0)");
});
关于为什么它向上舍入而不是保持为 2.60895 的任何想法?
【问题讨论】:
-
decimal(18, 0)不是表示“总共 18 位,小数点右侧没有”吗? docs.microsoft.com/en-us/sql/t-sql/data-types/… -
18,0表示您总共有 18 位小数,小数点右侧有 0 个数字。所以这基本上是一个 18 位的整数。先解决这个问题,看看会发生什么。 -
你说的完全正确.. 震惊我错过了。现在去测试
-
成功了.. 我花了很多时间盯着错误的地方来解决这个问题!谢谢大家 - 我会标记完成
-
@DavidG 无论如何都应该作为错字关闭。
标签: c# .net-core-2.0