diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj
index b7a72a6d64..998a534157 100644
--- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj
+++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj
@@ -286,6 +286,9 @@
Microsoft\Data\SqlClient\SqlInfoMessageEventHandler.cs
+
+ Microsoft\Data\SqlClient\SqlMetadataFactory.cs
+
Microsoft\Data\SqlClient\SqlNotificationEventArgs.cs
@@ -572,7 +575,6 @@
-
diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj
index 1cc25bdf54..0476824413 100644
--- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj
+++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj
@@ -375,6 +375,9 @@
Microsoft\Data\SqlClient\SqlInfoMessageEventHandler.cs
+
+ Microsoft\Data\SqlClient\SqlMetaDataFactory.cs
+
Microsoft\Data\SqlClient\SqlNotificationEventArgs.cs
@@ -562,7 +565,6 @@
-
diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/sqlmetadatafactory.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/sqlmetadatafactory.cs
deleted file mode 100644
index d98512bb6f..0000000000
--- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/sqlmetadatafactory.cs
+++ /dev/null
@@ -1,304 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
-using System;
-using System.Data;
-using System.Data.Common;
-using System.IO;
-using System.Text;
-using Microsoft.Data.Common;
-using Microsoft.Data.ProviderBase;
-
-namespace Microsoft.Data.SqlClient
-{
- internal sealed class SqlMetaDataFactory : DbMetaDataFactory
- { // V1.2.3300
-
- private const string _serverVersionNormalized90 = "09.00.0000";
- private const string _serverVersionNormalized90782 = "09.00.0782";
- private const string _serverVersionNormalized10 = "10.00.0000";
-
-
- public SqlMetaDataFactory(Stream XMLStream,
- string serverVersion,
- string serverVersionNormalized) :
- base(XMLStream, serverVersion, serverVersionNormalized)
- {
-
-
- }
-
- private void addUDTsToDataTypesTable(DataTable dataTypesTable, SqlConnection connection, String ServerVersion)
- {
-
- const string sqlCommand =
- "select " +
- "assemblies.name, " +
- "types.assembly_class, " +
- "ASSEMBLYPROPERTY(assemblies.name, 'VersionMajor') as version_major, " +
- "ASSEMBLYPROPERTY(assemblies.name, 'VersionMinor') as version_minor, " +
- "ASSEMBLYPROPERTY(assemblies.name, 'VersionBuild') as version_build, " +
- "ASSEMBLYPROPERTY(assemblies.name, 'VersionRevision') as version_revision, " +
- "ASSEMBLYPROPERTY(assemblies.name, 'CultureInfo') as culture_info, " +
- "ASSEMBLYPROPERTY(assemblies.name, 'PublicKey') as public_key, " +
- "is_nullable, " +
- "is_fixed_length, " +
- "max_length " +
- "from sys.assemblies as assemblies join sys.assembly_types as types " +
- "on assemblies.assembly_id = types.assembly_id ";
-
- // pre 9.0/Yukon servers do not have UDTs
- if (0 > string.Compare(ServerVersion, _serverVersionNormalized90, StringComparison.OrdinalIgnoreCase))
- {
- return;
- }
-
-
- // Execute the SELECT statement
- SqlCommand command = connection.CreateCommand();
- command.CommandText = sqlCommand;
- DataRow newRow = null;
- DataColumn providerDbtype = dataTypesTable.Columns[DbMetaDataColumnNames.ProviderDbType];
- DataColumn columnSize = dataTypesTable.Columns[DbMetaDataColumnNames.ColumnSize];
- DataColumn isFixedLength = dataTypesTable.Columns[DbMetaDataColumnNames.IsFixedLength];
- DataColumn isSearchable = dataTypesTable.Columns[DbMetaDataColumnNames.IsSearchable];
- DataColumn isLiteralSupported = dataTypesTable.Columns[DbMetaDataColumnNames.IsLiteralSupported];
- DataColumn typeName = dataTypesTable.Columns[DbMetaDataColumnNames.TypeName];
- DataColumn isNullable = dataTypesTable.Columns[DbMetaDataColumnNames.IsNullable];
-
- if ((providerDbtype == null) ||
- (columnSize == null) ||
- (isFixedLength == null) ||
- (isSearchable == null) ||
- (isLiteralSupported == null) ||
- (typeName == null) ||
- (isNullable == null))
- {
- throw ADP.InvalidXml();
- }
-
- const int columnSizeIndex = 10;
- const int isFixedLengthIndex = 9;
- const int isNullableIndex = 8;
- const int assemblyNameIndex = 0;
- const int assemblyClassIndex = 1;
- const int versionMajorIndex = 2;
- const int versionMinorIndex = 3;
- const int versionBuildIndex = 4;
- const int versionRevisionIndex = 5;
- const int cultureInfoIndex = 6;
- const int publicKeyIndex = 7;
-
-
- using (IDataReader reader = command.ExecuteReader())
- {
-
- object[] values = new object[11];
- while (reader.Read())
- {
-
- reader.GetValues(values);
- newRow = dataTypesTable.NewRow();
-
- newRow[providerDbtype] = SqlDbType.Udt;
-
- if (values[columnSizeIndex] != DBNull.Value)
- {
- newRow[columnSize] = values[columnSizeIndex];
- }
-
- if (values[isFixedLengthIndex] != DBNull.Value)
- {
- newRow[isFixedLength] = values[isFixedLengthIndex];
- }
-
- newRow[isSearchable] = true;
- newRow[isLiteralSupported] = false;
- if (values[isNullableIndex] != DBNull.Value)
- {
- newRow[isNullable] = values[isNullableIndex];
- }
-
- if ((values[assemblyNameIndex] != DBNull.Value) &&
- (values[assemblyClassIndex] != DBNull.Value) &&
- (values[versionMajorIndex] != DBNull.Value) &&
- (values[versionMinorIndex] != DBNull.Value) &&
- (values[versionBuildIndex] != DBNull.Value) &&
- (values[versionRevisionIndex] != DBNull.Value))
- {
-
- StringBuilder nameString = new StringBuilder();
- nameString.Append(values[assemblyClassIndex].ToString());
- nameString.Append(", ");
- nameString.Append(values[assemblyNameIndex].ToString());
- nameString.Append(", Version=");
-
- nameString.Append(values[versionMajorIndex].ToString());
- nameString.Append(".");
- nameString.Append(values[versionMinorIndex].ToString());
- nameString.Append(".");
- nameString.Append(values[versionBuildIndex].ToString());
- nameString.Append(".");
- nameString.Append(values[versionRevisionIndex].ToString());
-
- if (values[cultureInfoIndex] != DBNull.Value)
- {
- nameString.Append(", Culture=");
- nameString.Append(values[cultureInfoIndex].ToString());
- }
-
- if (values[publicKeyIndex] != DBNull.Value)
- {
-
- nameString.Append(", PublicKeyToken=");
-
- StringBuilder resultString = new StringBuilder();
- Byte[] byteArrayValue = (Byte[])values[publicKeyIndex];
- foreach (byte b in byteArrayValue)
- {
- resultString.Append(string.Format("{0,-2:x2}", b));
- }
- nameString.Append(resultString.ToString());
- }
-
- newRow[typeName] = nameString.ToString();
- dataTypesTable.Rows.Add(newRow);
- newRow.AcceptChanges();
- } // if assembly name
-
- }//end while
- } // end using
- }
-
- private void AddTVPsToDataTypesTable(DataTable dataTypesTable, SqlConnection connection, String ServerVersion)
- {
-
- const string sqlCommand =
- "select " +
- "name, " +
- "is_nullable, " +
- "max_length " +
- "from sys.types " +
- "where is_table_type = 1";
-
- // TODO: update this check once the server upgrades major version number!!!
- // pre 9.0/Yukon servers do not have Table types
- if (0 > string.Compare(ServerVersion, _serverVersionNormalized10, StringComparison.OrdinalIgnoreCase))
- {
- return;
- }
-
-
- // Execute the SELECT statement
- SqlCommand command = connection.CreateCommand();
- command.CommandText = sqlCommand;
- DataRow newRow = null;
- DataColumn providerDbtype = dataTypesTable.Columns[DbMetaDataColumnNames.ProviderDbType];
- DataColumn columnSize = dataTypesTable.Columns[DbMetaDataColumnNames.ColumnSize];
- DataColumn isSearchable = dataTypesTable.Columns[DbMetaDataColumnNames.IsSearchable];
- DataColumn isLiteralSupported = dataTypesTable.Columns[DbMetaDataColumnNames.IsLiteralSupported];
- DataColumn typeName = dataTypesTable.Columns[DbMetaDataColumnNames.TypeName];
- DataColumn isNullable = dataTypesTable.Columns[DbMetaDataColumnNames.IsNullable];
-
- if ((providerDbtype == null) ||
- (columnSize == null) ||
- (isSearchable == null) ||
- (isLiteralSupported == null) ||
- (typeName == null) ||
- (isNullable == null))
- {
- throw ADP.InvalidXml();
- }
-
- const int columnSizeIndex = 2;
- const int isNullableIndex = 1;
- const int typeNameIndex = 0;
-
- using (IDataReader reader = command.ExecuteReader())
- {
-
- object[] values = new object[11];
- while (reader.Read())
- {
-
- reader.GetValues(values);
- newRow = dataTypesTable.NewRow();
-
- newRow[providerDbtype] = SqlDbType.Structured;
-
- if (values[columnSizeIndex] != DBNull.Value)
- {
- newRow[columnSize] = values[columnSizeIndex];
- }
-
- newRow[isSearchable] = false;
- newRow[isLiteralSupported] = false;
- if (values[isNullableIndex] != DBNull.Value)
- {
- newRow[isNullable] = values[isNullableIndex];
- }
-
- if (values[typeNameIndex] != DBNull.Value)
- {
- newRow[typeName] = values[typeNameIndex];
- dataTypesTable.Rows.Add(newRow);
- newRow.AcceptChanges();
- } // if type name
- }//end while
- } // end using
- }
-
- private DataTable GetDataTypesTable(SqlConnection connection)
- {
-
-
- // verify the existance of the table in the data set
- DataTable dataTypesTable = CollectionDataSet.Tables[DbMetaDataCollectionNames.DataTypes];
- if (dataTypesTable == null)
- {
- throw ADP.UnableToBuildCollection(DbMetaDataCollectionNames.DataTypes);
- }
-
- // copy the table filtering out any rows that don't apply to tho current version of the prrovider
- dataTypesTable = CloneAndFilterCollection(DbMetaDataCollectionNames.DataTypes, null);
-
- addUDTsToDataTypesTable(dataTypesTable, connection, ServerVersionNormalized);
- AddTVPsToDataTypesTable(dataTypesTable, connection, ServerVersionNormalized);
-
- dataTypesTable.AcceptChanges();
- return dataTypesTable;
-
- }
-
- protected override DataTable PrepareCollection(String collectionName, String[] restrictions, DbConnection connection)
- {
-
- SqlConnection sqlConnection = (SqlConnection)connection;
- DataTable resultTable = null;
-
- if (collectionName == DbMetaDataCollectionNames.DataTypes)
- {
- if (ADP.IsEmptyArray(restrictions) == false)
- {
- throw ADP.TooManyRestrictions(DbMetaDataCollectionNames.DataTypes);
- }
- resultTable = GetDataTypesTable(sqlConnection);
- }
-
- if (resultTable == null)
- {
- throw ADP.UnableToBuildCollection(collectionName);
- }
-
- return resultTable;
-
- }
-
-
-
- }
-}
-
-
-
diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlMetadataFactory.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlMetadataFactory.cs
similarity index 93%
rename from src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlMetadataFactory.cs
rename to src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlMetadataFactory.cs
index efa6038f21..52aac76b7d 100644
--- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlMetadataFactory.cs
+++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlMetadataFactory.cs
@@ -15,9 +15,8 @@ namespace Microsoft.Data.SqlClient
internal sealed class SqlMetaDataFactory : DbMetaDataFactory
{
- private const string _serverVersionNormalized90 = "09.00.0000";
- private const string _serverVersionNormalized90782 = "09.00.0782";
- private const string _serverVersionNormalized10 = "10.00.0000";
+ private const string ServerVersionNormalized90 = "09.00.0000";
+ private const string ServerVersionNormalized10 = "10.00.0000";
public SqlMetaDataFactory(Stream XMLStream,
@@ -45,7 +44,7 @@ private void addUDTsToDataTypesTable(DataTable dataTypesTable, SqlConnection con
"on assemblies.assembly_id = types.assembly_id ";
// pre 9.0/Yukon servers do not have UDTs
- if (0 > string.Compare(ServerVersion, _serverVersionNormalized90, StringComparison.OrdinalIgnoreCase))
+ if (0 > string.Compare(ServerVersion, ServerVersionNormalized90, StringComparison.OrdinalIgnoreCase))
{
return;
}
@@ -53,7 +52,6 @@ private void addUDTsToDataTypesTable(DataTable dataTypesTable, SqlConnection con
// Execute the SELECT statement
SqlCommand command = connection.CreateCommand();
command.CommandText = sqlCommand;
- DataRow newRow = null;
DataColumn providerDbtype = dataTypesTable.Columns[DbMetaDataColumnNames.ProviderDbType];
DataColumn columnSize = dataTypesTable.Columns[DbMetaDataColumnNames.ColumnSize];
DataColumn isFixedLength = dataTypesTable.Columns[DbMetaDataColumnNames.IsFixedLength];
@@ -94,7 +92,7 @@ private void addUDTsToDataTypesTable(DataTable dataTypesTable, SqlConnection con
{
reader.GetValues(values);
- newRow = dataTypesTable.NewRow();
+ DataRow newRow = dataTypesTable.NewRow();
newRow[providerDbtype] = SqlDbType.Udt;
@@ -123,7 +121,7 @@ private void addUDTsToDataTypesTable(DataTable dataTypesTable, SqlConnection con
(values[versionRevisionIndex] != DBNull.Value))
{
- StringBuilder nameString = new StringBuilder();
+ StringBuilder nameString = new();
nameString.Append(values[assemblyClassIndex].ToString());
nameString.Append(", ");
nameString.Append(values[assemblyNameIndex].ToString());
@@ -148,7 +146,7 @@ private void addUDTsToDataTypesTable(DataTable dataTypesTable, SqlConnection con
nameString.Append(", PublicKeyToken=");
- StringBuilder resultString = new StringBuilder();
+ StringBuilder resultString = new();
byte[] byteArrayValue = (byte[])values[publicKeyIndex];
foreach (byte b in byteArrayValue)
{
@@ -179,7 +177,7 @@ private void AddTVPsToDataTypesTable(DataTable dataTypesTable, SqlConnection con
// TODO: update this check once the server upgrades major version number!!!
// pre 9.0/Yukon servers do not have Table types
- if (0 > string.Compare(ServerVersion, _serverVersionNormalized10, StringComparison.OrdinalIgnoreCase))
+ if (0 > string.Compare(ServerVersion, ServerVersionNormalized10, StringComparison.OrdinalIgnoreCase))
{
return;
}
@@ -187,7 +185,6 @@ private void AddTVPsToDataTypesTable(DataTable dataTypesTable, SqlConnection con
// Execute the SELECT statement
SqlCommand command = connection.CreateCommand();
command.CommandText = sqlCommand;
- DataRow newRow = null;
DataColumn providerDbtype = dataTypesTable.Columns[DbMetaDataColumnNames.ProviderDbType];
DataColumn columnSize = dataTypesTable.Columns[DbMetaDataColumnNames.ColumnSize];
DataColumn isSearchable = dataTypesTable.Columns[DbMetaDataColumnNames.IsSearchable];
@@ -217,7 +214,7 @@ private void AddTVPsToDataTypesTable(DataTable dataTypesTable, SqlConnection con
{
reader.GetValues(values);
- newRow = dataTypesTable.NewRow();
+ DataRow newRow = dataTypesTable.NewRow();
newRow[providerDbtype] = SqlDbType.Structured;