diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlBuffer.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlBuffer.cs index 1099c974ba..906feae661 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlBuffer.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlBuffer.cs @@ -508,6 +508,10 @@ internal SqlBinary SqlBinary { if (StorageType.SqlBinary == _type) { + if (IsNull) + { + return SqlBinary.Null; + } return (SqlBinary)_object; } return (SqlBinary)SqlValue; // anything else we haven't thought of goes through boxing. diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlBuffer.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlBuffer.cs index 66071812dc..bc112ddac4 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlBuffer.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/SqlBuffer.cs @@ -490,6 +490,10 @@ internal SqlBinary SqlBinary { if (StorageType.SqlBinary == _type) { + if (IsNull) + { + return SqlBinary.Null; + } return (SqlBinary)_object; } return (SqlBinary)SqlValue; // anything else we haven't thought of goes through boxing. diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/DataReaderTest/DataReaderTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/DataReaderTest/DataReaderTest.cs index 5fa95000ee..7167c41323 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/DataReaderTest/DataReaderTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/DataReaderTest/DataReaderTest.cs @@ -282,6 +282,14 @@ public static void CheckNullRowVersionIsBDNull() Assert.IsType(result); Assert.Equal(result, reader.GetFieldValue(0)); Assert.Throws(() => reader.GetFieldValue(0)); + + SqlBinary binary = reader.GetSqlBinary(0); + Assert.True(binary.IsNull); + + SqlBytes bytes = reader.GetSqlBytes(0); + Assert.True(bytes.IsNull); + Assert.Null(bytes.Buffer); + } finally {