Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -871,7 +871,6 @@
<Compile Include="Common\Microsoft\Data\Common\NameValuePermission.cs" />
<Compile Include="Microsoft\Data\Common\DbConnectionOptions.cs" />
<Compile Include="Microsoft\Data\Common\DbConnectionString.cs" />
<Compile Include="Microsoft\Data\Common\GreenMethods.cs" />
<Compile Include="Microsoft\Data\SqlClient\BufferWriterExtensions.cs" />
<Compile Include="Microsoft\Data\SqlClient\Server\SmiConnection.cs" />
<Compile Include="Microsoft\Data\SqlClient\Server\SmiContext.cs" />
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,72 @@
// 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.Data.Common;
using Microsoft.Data.Sql;

#if NETFRAMEWORK
using System;
using System.Data.Common;
using System.Reflection;
using System.Security.Permissions;
using System.Security;
using Microsoft.Data.Common;
#endif

namespace Microsoft.Data.SqlClient
{
/// <include file='../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlClientFactory.xml' path='docs/members[@name="SqlClientFactory"]/SqlClientFactory/*'/>
#if NETFRAMEWORK
public sealed class SqlClientFactory : DbProviderFactory, IServiceProvider
#else
public sealed class SqlClientFactory : DbProviderFactory
#if NETFRAMEWORK
, IServiceProvider
#endif
#endif
{
#if NETFRAMEWORK
#region Constants / Member Variables

private const string ExtensionAssemblyRef =
"System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=" + AssemblyRef.EcmaPublicKey;

private const string MicrosoftDataSqlClientSqlProviderServicesTypeName =
"Microsoft.Data.SqlClient.SQLProviderServices, " + ExtensionAssemblyRef;

private const string SystemDataCommonDbProviderServicesTypeName =
"System.Data.Common.DbProviderServices, " + ExtensionAssemblyRef;

private static readonly Lazy<object> MicrosoftDataSqlClientProviderServicesInstance =
new(static () =>
{
FieldInfo instanceFieldInfo = MicrosoftDataSqlClientSqlProviderServicesType.Value?.GetField(
"Instance",
BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static);
return instanceFieldInfo?.GetValue(null);
});

private static readonly Lazy<Type> MicrosoftDataSqlClientSqlProviderServicesType =
new (static () => Type.GetType(MicrosoftDataSqlClientSqlProviderServicesTypeName, throwOnError: false));

private static readonly Lazy<Type> SystemDataCommonDbProviderServicesType =
new(static () => Type.GetType(SystemDataCommonDbProviderServicesTypeName, throwOnError: false));

#endregion
#endif

/// <include file='../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlClientFactory.xml' path='docs/members[@name="SqlClientFactory"]/Instance/*'/>
public static readonly SqlClientFactory Instance = new SqlClientFactory();

private SqlClientFactory()
{
}

#if NET
/// <include file='../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlClientFactory.xml' path='docs/members[@name="SqlClientFactory"]/CanCreateBatch/*'/>
public override bool CanCreateBatch => true;

/// <include file='../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlClientFactory.xml' path='docs/members[@name="SqlClientFactory"]/CreateBatch/*'/>
public override DbBatch CreateBatch() => new SqlBatch();

/// <include file='../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlClientFactory.xml' path='docs/members[@name="SqlClientFactory"]/CreateBatchCommand/*'/>
public override DbBatchCommand CreateBatchCommand() => new SqlBatchCommand();
#endif

/// <include file='../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlClientFactory.xml' path='docs/members[@name="SqlClientFactory"]/CanCreateDataSourceEnumerator/*'/>
public override bool CanCreateDataSourceEnumerator => true;
Expand Down Expand Up @@ -64,45 +108,28 @@ public override DbParameter CreateParameter()
return new SqlParameter();
}

#if NETFRAMEWORK
#if NETFRAMEWORK
/// <include file='../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlClientFactory.xml' path='docs/members[@name="SqlClientFactory"]/CreatePermission/*'/>
public override CodeAccessPermission CreatePermission(PermissionState state)
{
return new SqlClientPermission(state);
}

/// <summary>
/// Extension mechanism for additional services; currently the only service
/// supported is the DbProviderServices
/// Extension mechanism for additional services; currently the only service supported is
/// the <c>System.Data.Common.DbProviderServices</c> type.
/// </summary>
/// <returns>requested service provider or null.</returns>
object IServiceProvider.GetService(Type serviceType)
{
object result = null;
if (serviceType == GreenMethods.SystemDataCommonDbProviderServices_Type)
{
result = GreenMethods.MicrosoftDataSqlClientSqlProviderServices_Instance();
}
return result;
}
#endif
/// <returns>Requested service provider or <c>null</c>.</returns>
object IServiceProvider.GetService(Type serviceType) =>
serviceType == SystemDataCommonDbProviderServicesType.Value
? MicrosoftDataSqlClientProviderServicesInstance.Value
: null;
#endif

/// <include file='../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlClientFactory.xml' path='docs/members[@name="SqlClientFactory"]/CreateDataSourceEnumerator/*'/>
public override DbDataSourceEnumerator CreateDataSourceEnumerator()
{
return SqlDataSourceEnumerator.Instance;
}

#if NET
/// <include file='../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlClientFactory.xml' path='docs/members[@name="SqlClientFactory"]/CanCreateBatch/*'/>
public override bool CanCreateBatch => true;

/// <include file='../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlClientFactory.xml' path='docs/members[@name="SqlClientFactory"]/CreateBatch/*'/>
public override DbBatch CreateBatch() => new SqlBatch();

/// <include file='../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlClientFactory.xml' path='docs/members[@name="SqlClientFactory"]/CreateBatchCommand/*'/>
public override DbBatchCommand CreateBatchCommand() => new SqlBatchCommand();
#endif

}
}
Loading