【问题标题】:EF BulkInsert doesn't honour SQLProviderServices setupEF BulkInsert 不支持 SQLProviderServices 设置
【发布时间】:2019-06-24 07:55:10
【问题描述】:

可能的 XY 问题:我需要我的代码在写入数据库时​​不要截断小数。 见这里:https://entityframework.net/knowledge-base/26392489/entity-framework-code-first-truncating-my-decimals

我已成功配置我的 EF dbContext,以便它将完整的小数发送到 SQL Server,以进行适当的四舍五入。

即我已经设置了SqlProviderServices.TruncateDecimalsToScale = false;

使用普通 EF 运行测试“将此对象写入其数据集并 .Savechanges()”工作正常。

但是当我对 BulkInsert 库 (link) 执行相同的概念操作时,它不支持该设置。

有没有健全的方法来解决这个问题?

【问题讨论】:

    标签: c# entity-framework bulkinsert


    【解决方案1】:

    事实证明,这很可能是底层 .NET Framework 类实现不佳的结果。

    根据此处:Sql Bulk Copy Truncating Decimal 基础 SqlBulkCopy 类不允许选择舍入小数,即使原则上可以这样做。

    所以任何使用 SqlBulkCopy 的 BulkInsert 库都会遇到这个问题。


    我的解决方案是用支持字段和舍入设置器替换自动属性。 如果您关心它是使用.ToEven() 还是.AwayFromZero(),这还具有允许控制舍入策略的优势。请注意,默认情况下,C# 执行前者,但 SQL 执行后者。 :(

    【讨论】:

      猜你喜欢
      • 2014-10-09
      • 2022-11-18
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      • 2012-08-18
      • 2020-01-23
      • 2016-03-11
      • 1970-01-01
      相关资源
      最近更新 更多