Оказывается, что это, вероятно, результат того, что базовый класс .NET Framework плохо реализован.
Как указано здесь: Sql Bulk Copy Truncating Decimal базовый SqlBulkCopy
классне допускает опцию округления десятичных дробей, хотя в принципе это возможно.
Так что любая библиотека BulkInsert, использующая SqlBulkCopy, пострадает от этой проблемы.
Мое решение заключалось в том, чтобызамените авто-свойство полем поддержки и установщиком округления.Это также имеет то преимущество, что позволяет контролировать стратегию округления, если вы заботитесь о том, использует ли она .ToEven()
или .AwayFromZero()
.Обратите внимание, что C # делает первое по умолчанию, а SQL - второе.(