Open
Description
Description
When upgrading from .NET 6 to .NET 7 we encountered a breaking change in SqlDataReader.
For some reason, upgrading runtime from 6 to 7 changes the behavior of System.Data.SqlDataReader.GetString() to throw when asked to read a null rather than return a null. This is particularly weird because I hadn't gotten around to upgrading SqlDataReader yet. I'm still using the version number from .NET 6.
IDataReader source;
- string IDataRow.GetString(int index) => source.GetString(index);
+ // NET 6 behavior: GetString(null column) -> null
+ // NET 7 behavior: GetString(null column) -> throw
+ // BSONReader behavior -> null
+ // Thus expected itnerface behavior is null so we do that
+ string IDataRow.GetString(int index) => source.IsDBNull(index) ? null : source.GetString(index);
Version
.NET 7
Previous behavior
GetString(null column id) => null
New behavior
GetString(null column id) => throw
Type of breaking change
- Binary incompatible: Existing binaries may encounter a breaking change in behavior, such as failure to load/execute or different run-time behavior.
- Source incompatible: Source code may encounter a breaking change in behavior when targeting the new runtime/component/SDK, such as compile errors or different run-time behavior.
Reason for change
unknown
Recommended action
Document change
Feature area
Other (please put exact area in description textbox)
Affected APIs
System.Data.SqlClient.GetString()