【发布时间】:2014-05-12 01:21:27
【问题描述】:
这是我面临的一个问题,它在从 C# Entity Framework 存储到 SQL Server 数据库时导致精度损失。
- SQL Server 数据类型为
decimal(20, 15) - 在 C# 中属性定义为
public decimal AssignedGrossBudget { get; set; } - 在 C# 中,变量 (AssignedGrossBudget) 中的值为 34.09090909090909
- 但在 SQL Server 表中是 34.090000000000000
可能出了什么问题? (我正在使用实体框架 db.SaveChanges(); 和 SQLBulkCopy 将数据从 c# 存储到 SQL Server)
我想存储 34.09090909090909 而不是 34.090000000000000。
我通过直接插入表格进行检查,它可以工作。
【问题讨论】:
-
能否提供批量复制的代码?
-
请使用 Profiler 捕获 EF 生成的准确语句,并发布文本数据。
-
可能你需要为EF配置精度:stackoverflow.com/questions/3504660/…
-
是引起问题的 SaveChanges 还是 SqlBulkCopy?您不会将两者用于相同的操作,因此应该很明显应该归咎于哪一个 - 您的问题无需同时提及。
-
Joe:两者都有问题,但它们的操作不同。 SQL Bulk Copy 用于将数据从 Excel 上传到 SQL Server(使用 EPPlus),而 EF 用于其他 UI 操作。
标签: c# sql-server entity-framework decimal sqldatatypes