Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1811672

Browse files
ErikEJdauinsight
authored andcommitted
Fix | ArgumentNullException on SqlDataRecord.GetValue when using Udt data type (dotnet#2448)
1 parentda57fa9 commit1811672

File tree

3 files changed

+36
-5
lines changed

3 files changed

+36
-5
lines changed

‎src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Server/MetadataUtilsSmi.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -500,11 +500,7 @@ internal static SmiExtendedMetaData SqlMetaDataToSmiExtendedMetaData(SqlMetaData
500500
source.Scale,
501501
source.LocaleId,
502502
source.CompareOptions,
503-
#ifNETFRAMEWORK
504503
source.Type,
505-
#else
506-
null,
507-
#endif
508504
source.Name,
509505
typeSpecificNamePart1,
510506
typeSpecificNamePart2,

‎src/Microsoft.Data.SqlClient/tests/FunctionalTests/Microsoft.Data.SqlClient.Tests.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@
9494
<PackageReferenceCondition="$(ReferenceType.Contains('NetStandard'))"Include="System.Diagnostics.DiagnosticSource"Version="$(SystemDiagnosticsDiagnosticSourceVersion)" />
9595
<PackageReferenceInclude="Newtonsoft.Json"Version="$(NewtonsoftJsonVersion)" />
9696
<ReferenceCondition="'$(TargetGroup)'=='netfx'"Include="System.Transactions" />
97+
<PackageReferenceCondition="'$(TargetGroup)'=='netfx'"Include="Microsoft.SqlServer.Types"Version="$(MicrosoftSqlServerTypesVersion)" />
98+
<PackageReferenceCondition="'$(TargetGroup)'=='netcoreapp'"Include="Microsoft.SqlServer.Types"Version="$(MicrosoftSqlServerTypesVersionNet)" />
9799
</ItemGroup>
98100
<ItemGroupCondition="'$(TargetGroup)' == 'netcoreapp'">
99101
<PackageReferenceInclude="System.Data.Odbc"Version="$(SystemDataOdbcVersion)" />

‎src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlDataRecordTest.cs

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
usingSystem.Data;
99
usingSystem.Data.SqlTypes;
1010
usingMicrosoft.Data.SqlClient.Server;
11+
usingMicrosoft.SqlServer.Types;
1112
usingXunit;
1213

1314
namespaceMicrosoft.Data.SqlClient.Tests
@@ -318,6 +319,19 @@ public void GetChar_ThrowsNotSupported()
318319
Assert.Throws<NotSupportedException>(()=>record.GetChar(0));
319320
}
320321

322+
[Theory]
323+
[ClassData(typeof(GetUdtTypeTestData))]
324+
publicvoidGetUdt_ReturnsValue(TypeudtType,objectvalue,stringserverTypeName)
325+
{
326+
SqlMetaData[]metadata=newSqlMetaData[]{newSqlMetaData(nameof(udtType.Name),SqlDbType.Udt,udtType,serverTypeName)};
327+
328+
SqlDataRecordrecord=newSqlDataRecord(metadata);
329+
330+
record.SetValue(0,value);
331+
332+
Assert.Equal(value.ToString(),record.GetValue(0).ToString());
333+
}
334+
321335
[Theory]
322336
[ClassData(typeof(GetXXXBadTypeTestData))]
323337
publicvoidGetXXX_ThrowsIfBadType(Func<SqlDataRecord,object>getXXX)
@@ -342,8 +356,8 @@ public void GetXXX_ReturnValue(SqlDbType dbType, object value, Func<SqlDataRecor
342356
};
343357
SqlDataRecordrecord=newSqlDataRecord(metaData);
344358
record.SetValue(0,value);
359+
Assert.Equal(value,record.GetValue(0));
345360
Assert.Equal(value,getXXX(record));
346-
347361
}
348362
}
349363

@@ -369,6 +383,21 @@ IEnumerator IEnumerable.GetEnumerator()
369383
}
370384
}
371385

386+
publicclassGetUdtTypeTestData:IEnumerable<object[]>
387+
{
388+
publicIEnumerator<object[]>GetEnumerator()
389+
{
390+
yieldreturnnewobject[]{typeof(SqlGeography),SqlGeography.Point(43,-81,4326),"Geography"};
391+
yieldreturnnewobject[]{typeof(SqlGeometry),SqlGeometry.Point(43,-81,4326),"Geometry"};
392+
yieldreturnnewobject[]{typeof(SqlHierarchyId),SqlHierarchyId.Parse("/"),"HierarchyId"};
393+
}
394+
395+
IEnumeratorIEnumerable.GetEnumerator()
396+
{
397+
returnGetEnumerator();
398+
}
399+
}
400+
372401
publicclassGetXXXCheckValueTestData:IEnumerable<object[]>
373402
{
374403
publicIEnumerator<object[]>GetEnumerator()
@@ -383,6 +412,10 @@ public IEnumerator<object[]> GetEnumerator()
383412
yieldreturnnewobject[]{SqlDbType.DateTime,DateTime.Now,newFunc<SqlDataRecord,object>(r=>r.GetDateTime(0))};
384413
yieldreturnnewobject[]{SqlDbType.DateTimeOffset,newDateTimeOffset(DateTime.Now),newFunc<SqlDataRecord,object>(r=>r.GetDateTimeOffset(0))};
385414
yieldreturnnewobject[]{SqlDbType.Time,TimeSpan.FromHours(1),newFunc<SqlDataRecord,object>(r=>r.GetTimeSpan(0))};
415+
yieldreturnnewobject[]{SqlDbType.Date,DateTime.Now.Date,newFunc<SqlDataRecord,object>(r=>r.GetDateTime(0))};
416+
yieldreturnnewobject[]{SqlDbType.Bit,bool.Parse(bool.TrueString),newFunc<SqlDataRecord,object>(r=>r.GetBoolean(0))};
417+
yieldreturnnewobject[]{SqlDbType.SmallDateTime,DateTime.Now,newFunc<SqlDataRecord,object>(r=>r.GetDateTime(0))};
418+
yieldreturnnewobject[]{SqlDbType.TinyInt,(byte)1,newFunc<SqlDataRecord,object>(r=>r.GetByte(0))};
386419
}
387420

388421
IEnumeratorIEnumerable.GetEnumerator()

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp