You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Querying int columns as strings has broken in 2.1.37 #2056
Might be intentional, but worked in 2.1.35, and I suspect a lot of people will be depending on it and pretty surprised, as there's no mention of a breaking change in the release notes.
To replicate, simply (I'm using Azure SQL Server):
using IDbConnection cx = new SqlConnection("your-connection-string");
string? actual = await cx.QueryFirstOrDefaultAsync<string>("select id from someTableWithAnIntIdColumn").ConfigureAwait(false);
In 2.1.35, this returns e.g. "42". In 2.1.37 it throws System.InvalidCastException : Unable to cast object of type 'System.Int32' to type 'System.String'.
Fuller exception:
System.InvalidCastException : Unable to cast object of type 'System.Int32' to type 'System.String'.
at Microsoft.Data.SqlClient.SqlDataReader.GetFieldValueFromSqlBufferInternal[T](SqlBuffer data, _SqlMetaData metaData, Boolean isAsync)
at Microsoft.Data.SqlClient.SqlDataReader.GetFieldValueInternal[T](Int32 i, Boolean isAsync)
at Microsoft.Data.SqlClient.SqlDataReader.GetFieldValue[T](Int32 i)
at Dapper.SqlMapper.<>c__DisplayClass209_0`1.<UnderlyingReadViaGetFieldValueFactory>b__0(DbDataReader reader) in /_/Dapper/SqlMapper.cs:line 3134
at Dapper.SqlMapper.QueryRowAsync[T](IDbConnection cnn, Row row, Type effectiveType, CommandDefinition command) in /_/Dapper/SqlMapper.Async.cs:line 496
at <my test code>
Activity
mgravell commentedon Mar 14, 2024
That's because we didn't know it was a break. This is related to the GetValue change for strings, to mitigate against a npgsql behaviour.
I've unlisted - will think of best path forward, probably a revert.
mgravell commentedon Mar 14, 2024
Xref #2049 #2050
mdx0111 commentedon Apr 12, 2024
I have the same problem with decimal to string.
Thanks
mgravell commentedon Apr 12, 2024
Yup, we need to revert a change there (which is why 2.1.37 is hidden); I'll do that now
mgravell commentedon Apr 12, 2024
#2070
mgravell commentedon Apr 12, 2024
https://github.com/DapperLib/Dapper/releases/tag/2.1.42