Skip to content

ArgumentException after updating Microsoft.Data.SqlClient to 7.1.0 #4715

Description

@andygjp

Describe the bug

My unit tests fail after updating to the latest version. This is the stack trace:

System.ArgumentException
Parameter value '0.000' is out of range.
   at Microsoft.Data.SqlClient.TdsParser.TDSExecuteRPCAddParameter(TdsParserStateObject stateObj, SqlParameter param, MetaType mt, Byte options, SqlCommand command, Boolean isAnonymous)
   at Microsoft.Data.SqlClient.TdsParser.TdsExecuteRPC(SqlCommand cmd, IList`1 rpcArray, Int32 timeout, Boolean inSchema, SqlNotificationRequest notificationRequest, TdsParserStateObject stateObj, Boolean isCommandProc, Boolean sync, TaskCompletionSource`1 completion, Int32 startRpc, Int32 startParam)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean isAsync, Int32 timeout, Task& task, Boolean asyncWrite, Boolean isRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource`1 completion, Int32 timeout, Task& executeTask, Boolean& usedCache, Boolean asyncWrite, Boolean isRetry, String method)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReader(RelationalCommandParameterObject parameterObject)
   at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConnection connection)

I'm writing 0 to a column that is decimal(3,3). TdsParser.AdjustDecimalScale changes the precision from 3 to 4 and then I get the exception. If I change the value of the property of the entity from C# default of 0M to 0.001M it works. I assume this is related to #4443.

To reproduce

I have created a repo that demonstrates the issue: https://github.com/andygjp/TdsParserArgumentException.

Expected behavior

Should be able to use default values for decimal types.

Further technical details

Microsoft.EntityFrameworkCore.SqlServer: 11.0.0-rc.1.26425.128
Microsoft.Data.SqlClient: 7.1.0
.NET: 11.0.100-rc.1.26425.128
SQL Server 2025 (https://mcr.microsoft.com/en-us/artifact/mar/mssql/server/tag/2025-latest)
MacOS 27

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Regression 💥Issues that are regressions introduced from earlier PRs.

Type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions