这是我面临的一个问题,当从 C# Entity Framework 存储到 SQL Server 数据库时会导致精度损失。
- SQL Server 数据类型是
decimal(20, 15)
- 在 C# 中,属性定义为
public decimal AssignedGrossBudget { get;放; }
- 在 C# 中,变量 (AssignedGrossBudget) 的值是 34.09090909090909
- 但在 SQL Server 表中它是 34.090000000000000
有什么问题吗? (我正在使用 Entity Framework db.SaveChanges(); 和 SQLBulkCopy 将数据从 c# 存储到 SQL Server)
我想存储 34.09090909090909 而不是 34.090000000000000。
我通过直接插入表格进行了检查,它有效。
最佳答案
谢谢 Urril 和 Remus。
我在 Entity Framework 中做了如下更改:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<StationMapping>().Property(x => x.AssignedGrossBudget).HasPrecision(35, 15);
}
对于 SQL BulkCopy,我按照 Remus 的建议添加了数据类型。
SpotLookupTable.Columns.Add(new DataColumn("GrossBudget",typeof(decimal)));
它现在正在工作并且没有损失(或可忽略不计)。
干杯
关于c# - 从 C# 到 SQL Server 的精度损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22782996/