2016-08-03 10:59:49 +00:00
//------------------------------------------------------------------------------
// <copyright file="SqlConnectionStringBuilder.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// <owner current="true" primary="true">[....]</owner>
// <owner current="true" primary="false">[....]</owner>
//------------------------------------------------------------------------------
using System ;
using System.Collections ;
using System.Collections.Generic ;
using System.ComponentModel ;
using System.Data ;
using System.Data.Common ;
using System.Diagnostics ;
using System.Globalization ;
using System.Runtime.Serialization ;
using System.Security.Permissions ;
using System.Text ;
using System.Diagnostics.CodeAnalysis ;
namespace System.Data.SqlClient {
[DefaultProperty("DataSource")]
[System.ComponentModel.TypeConverterAttribute(typeof(SqlConnectionStringBuilder.SqlConnectionStringBuilderConverter))]
public sealed class SqlConnectionStringBuilder : DbConnectionStringBuilder {
private enum Keywords { // specific ordering for ConnectionString output construction
// NamedConnection,
DataSource ,
FailoverPartner ,
AttachDBFilename ,
InitialCatalog ,
IntegratedSecurity ,
PersistSecurityInfo ,
UserID ,
Password ,
Enlist ,
Pooling ,
MinPoolSize ,
MaxPoolSize ,
2016-11-10 13:04:39 +00:00
PoolBlockingPeriod ,
2016-08-03 10:59:49 +00:00
AsynchronousProcessing ,
ConnectionReset ,
MultipleActiveResultSets ,
Replication ,
ConnectTimeout ,
Encrypt ,
TrustServerCertificate ,
LoadBalanceTimeout ,
NetworkLibrary ,
PacketSize ,
TypeSystemVersion ,
Authentication ,
ApplicationName ,
CurrentLanguage ,
WorkstationID ,
UserInstance ,
ContextConnection ,
TransactionBinding ,
ApplicationIntent ,
MultiSubnetFailover ,
TransparentNetworkIPResolution ,
ConnectRetryCount ,
ConnectRetryInterval ,
ColumnEncryptionSetting ,
// keep the count value last
KeywordsCount
}
internal const int KeywordsCount = ( int ) Keywords . KeywordsCount ;
private static readonly string [ ] _validKeywords ;
private static readonly Dictionary < string , Keywords > _keywords ;
private ApplicationIntent _applicationIntent = DbConnectionStringDefaults . ApplicationIntent ;
private string _applicationName = DbConnectionStringDefaults . ApplicationName ;
private string _attachDBFilename = DbConnectionStringDefaults . AttachDBFilename ;
private string _currentLanguage = DbConnectionStringDefaults . CurrentLanguage ;
private string _dataSource = DbConnectionStringDefaults . DataSource ;
private string _failoverPartner = DbConnectionStringDefaults . FailoverPartner ;
private string _initialCatalog = DbConnectionStringDefaults . InitialCatalog ;
// private string _namedConnection = DbConnectionStringDefaults.NamedConnection;
private string _networkLibrary = DbConnectionStringDefaults . NetworkLibrary ;
private string _password = DbConnectionStringDefaults . Password ;
private string _transactionBinding = DbConnectionStringDefaults . TransactionBinding ;
private string _typeSystemVersion = DbConnectionStringDefaults . TypeSystemVersion ;
private string _userID = DbConnectionStringDefaults . UserID ;
private string _workstationID = DbConnectionStringDefaults . WorkstationID ;
private int _connectTimeout = DbConnectionStringDefaults . ConnectTimeout ;
private int _loadBalanceTimeout = DbConnectionStringDefaults . LoadBalanceTimeout ;
private int _maxPoolSize = DbConnectionStringDefaults . MaxPoolSize ;
private int _minPoolSize = DbConnectionStringDefaults . MinPoolSize ;
private int _packetSize = DbConnectionStringDefaults . PacketSize ;
private int _connectRetryCount = DbConnectionStringDefaults . ConnectRetryCount ;
private int _connectRetryInterval = DbConnectionStringDefaults . ConnectRetryInterval ;
private bool _asynchronousProcessing = DbConnectionStringDefaults . AsynchronousProcessing ;
private bool _connectionReset = DbConnectionStringDefaults . ConnectionReset ;
private bool _contextConnection = DbConnectionStringDefaults . ContextConnection ;
private bool _encrypt = DbConnectionStringDefaults . Encrypt ;
private bool _trustServerCertificate = DbConnectionStringDefaults . TrustServerCertificate ;
private bool _enlist = DbConnectionStringDefaults . Enlist ;
private bool _integratedSecurity = DbConnectionStringDefaults . IntegratedSecurity ;
private bool _multipleActiveResultSets = DbConnectionStringDefaults . MultipleActiveResultSets ;
private bool _multiSubnetFailover = DbConnectionStringDefaults . MultiSubnetFailover ;
private bool _transparentNetworkIPResolution = DbConnectionStringDefaults . TransparentNetworkIPResolution ;
private bool _persistSecurityInfo = DbConnectionStringDefaults . PersistSecurityInfo ;
private bool _pooling = DbConnectionStringDefaults . Pooling ;
private bool _replication = DbConnectionStringDefaults . Replication ;
private bool _userInstance = DbConnectionStringDefaults . UserInstance ;
private SqlAuthenticationMethod _authentication = DbConnectionStringDefaults . Authentication ;
private SqlConnectionColumnEncryptionSetting _columnEncryptionSetting = DbConnectionStringDefaults . ColumnEncryptionSetting ;
2016-11-10 13:04:39 +00:00
private PoolBlockingPeriod _poolBlockingPeriod = DbConnectionStringDefaults . PoolBlockingPeriod ;
2016-08-03 10:59:49 +00:00
static SqlConnectionStringBuilder ( ) {
string [ ] validKeywords = new string [ KeywordsCount ] ;
validKeywords [ ( int ) Keywords . ApplicationIntent ] = DbConnectionStringKeywords . ApplicationIntent ;
validKeywords [ ( int ) Keywords . ApplicationName ] = DbConnectionStringKeywords . ApplicationName ;
validKeywords [ ( int ) Keywords . AsynchronousProcessing ] = DbConnectionStringKeywords . AsynchronousProcessing ;
validKeywords [ ( int ) Keywords . AttachDBFilename ] = DbConnectionStringKeywords . AttachDBFilename ;
2016-11-10 13:04:39 +00:00
validKeywords [ ( int ) Keywords . PoolBlockingPeriod ] = DbConnectionStringKeywords . PoolBlockingPeriod ;
2016-08-03 10:59:49 +00:00
validKeywords [ ( int ) Keywords . ConnectionReset ] = DbConnectionStringKeywords . ConnectionReset ;
validKeywords [ ( int ) Keywords . ContextConnection ] = DbConnectionStringKeywords . ContextConnection ;
validKeywords [ ( int ) Keywords . ConnectTimeout ] = DbConnectionStringKeywords . ConnectTimeout ;
validKeywords [ ( int ) Keywords . CurrentLanguage ] = DbConnectionStringKeywords . CurrentLanguage ;
validKeywords [ ( int ) Keywords . DataSource ] = DbConnectionStringKeywords . DataSource ;
validKeywords [ ( int ) Keywords . Encrypt ] = DbConnectionStringKeywords . Encrypt ;
validKeywords [ ( int ) Keywords . Enlist ] = DbConnectionStringKeywords . Enlist ;
validKeywords [ ( int ) Keywords . FailoverPartner ] = DbConnectionStringKeywords . FailoverPartner ;
validKeywords [ ( int ) Keywords . InitialCatalog ] = DbConnectionStringKeywords . InitialCatalog ;
validKeywords [ ( int ) Keywords . IntegratedSecurity ] = DbConnectionStringKeywords . IntegratedSecurity ;
validKeywords [ ( int ) Keywords . LoadBalanceTimeout ] = DbConnectionStringKeywords . LoadBalanceTimeout ;
validKeywords [ ( int ) Keywords . MaxPoolSize ] = DbConnectionStringKeywords . MaxPoolSize ;
validKeywords [ ( int ) Keywords . MinPoolSize ] = DbConnectionStringKeywords . MinPoolSize ;
validKeywords [ ( int ) Keywords . MultipleActiveResultSets ] = DbConnectionStringKeywords . MultipleActiveResultSets ;
validKeywords [ ( int ) Keywords . MultiSubnetFailover ] = DbConnectionStringKeywords . MultiSubnetFailover ;
validKeywords [ ( int ) Keywords . TransparentNetworkIPResolution ] = DbConnectionStringKeywords . TransparentNetworkIPResolution ;
// validKeywords[(int)Keywords.NamedConnection] = DbConnectionStringKeywords.NamedConnection;
validKeywords [ ( int ) Keywords . NetworkLibrary ] = DbConnectionStringKeywords . NetworkLibrary ;
validKeywords [ ( int ) Keywords . PacketSize ] = DbConnectionStringKeywords . PacketSize ;
validKeywords [ ( int ) Keywords . Password ] = DbConnectionStringKeywords . Password ;
validKeywords [ ( int ) Keywords . PersistSecurityInfo ] = DbConnectionStringKeywords . PersistSecurityInfo ;
validKeywords [ ( int ) Keywords . Pooling ] = DbConnectionStringKeywords . Pooling ;
validKeywords [ ( int ) Keywords . Replication ] = DbConnectionStringKeywords . Replication ;
validKeywords [ ( int ) Keywords . TransactionBinding ] = DbConnectionStringKeywords . TransactionBinding ;
validKeywords [ ( int ) Keywords . TrustServerCertificate ] = DbConnectionStringKeywords . TrustServerCertificate ;
validKeywords [ ( int ) Keywords . TypeSystemVersion ] = DbConnectionStringKeywords . TypeSystemVersion ;
validKeywords [ ( int ) Keywords . UserID ] = DbConnectionStringKeywords . UserID ;
validKeywords [ ( int ) Keywords . UserInstance ] = DbConnectionStringKeywords . UserInstance ;
validKeywords [ ( int ) Keywords . WorkstationID ] = DbConnectionStringKeywords . WorkstationID ;
validKeywords [ ( int ) Keywords . ConnectRetryCount ] = DbConnectionStringKeywords . ConnectRetryCount ;
validKeywords [ ( int ) Keywords . ConnectRetryInterval ] = DbConnectionStringKeywords . ConnectRetryInterval ;
validKeywords [ ( int ) Keywords . Authentication ] = DbConnectionStringKeywords . Authentication ;
validKeywords [ ( int ) Keywords . ColumnEncryptionSetting ] = DbConnectionStringKeywords . ColumnEncryptionSetting ;
_validKeywords = validKeywords ;
Dictionary < string , Keywords > hash = new Dictionary < string , Keywords > ( KeywordsCount + SqlConnectionString . SynonymCount , StringComparer . OrdinalIgnoreCase ) ;
hash . Add ( DbConnectionStringKeywords . ApplicationIntent , Keywords . ApplicationIntent ) ;
hash . Add ( DbConnectionStringKeywords . ApplicationName , Keywords . ApplicationName ) ;
hash . Add ( DbConnectionStringKeywords . AsynchronousProcessing , Keywords . AsynchronousProcessing ) ;
hash . Add ( DbConnectionStringKeywords . AttachDBFilename , Keywords . AttachDBFilename ) ;
2016-11-10 13:04:39 +00:00
hash . Add ( DbConnectionStringKeywords . PoolBlockingPeriod , Keywords . PoolBlockingPeriod ) ;
2016-08-03 10:59:49 +00:00
hash . Add ( DbConnectionStringKeywords . ConnectTimeout , Keywords . ConnectTimeout ) ;
hash . Add ( DbConnectionStringKeywords . ConnectionReset , Keywords . ConnectionReset ) ;
hash . Add ( DbConnectionStringKeywords . ContextConnection , Keywords . ContextConnection ) ;
hash . Add ( DbConnectionStringKeywords . CurrentLanguage , Keywords . CurrentLanguage ) ;
hash . Add ( DbConnectionStringKeywords . DataSource , Keywords . DataSource ) ;
hash . Add ( DbConnectionStringKeywords . Encrypt , Keywords . Encrypt ) ;
hash . Add ( DbConnectionStringKeywords . Enlist , Keywords . Enlist ) ;
hash . Add ( DbConnectionStringKeywords . FailoverPartner , Keywords . FailoverPartner ) ;
hash . Add ( DbConnectionStringKeywords . InitialCatalog , Keywords . InitialCatalog ) ;
hash . Add ( DbConnectionStringKeywords . IntegratedSecurity , Keywords . IntegratedSecurity ) ;
hash . Add ( DbConnectionStringKeywords . LoadBalanceTimeout , Keywords . LoadBalanceTimeout ) ;
hash . Add ( DbConnectionStringKeywords . MultipleActiveResultSets , Keywords . MultipleActiveResultSets ) ;
hash . Add ( DbConnectionStringKeywords . MaxPoolSize , Keywords . MaxPoolSize ) ;
hash . Add ( DbConnectionStringKeywords . MinPoolSize , Keywords . MinPoolSize ) ;
hash . Add ( DbConnectionStringKeywords . MultiSubnetFailover , Keywords . MultiSubnetFailover ) ;
hash . Add ( DbConnectionStringKeywords . TransparentNetworkIPResolution , Keywords . TransparentNetworkIPResolution ) ;
// hash.Add(DbConnectionStringKeywords.NamedConnection, Keywords.NamedConnection);
hash . Add ( DbConnectionStringKeywords . NetworkLibrary , Keywords . NetworkLibrary ) ;
hash . Add ( DbConnectionStringKeywords . PacketSize , Keywords . PacketSize ) ;
hash . Add ( DbConnectionStringKeywords . Password , Keywords . Password ) ;
hash . Add ( DbConnectionStringKeywords . PersistSecurityInfo , Keywords . PersistSecurityInfo ) ;
hash . Add ( DbConnectionStringKeywords . Pooling , Keywords . Pooling ) ;
hash . Add ( DbConnectionStringKeywords . Replication , Keywords . Replication ) ;
hash . Add ( DbConnectionStringKeywords . TransactionBinding , Keywords . TransactionBinding ) ;
hash . Add ( DbConnectionStringKeywords . TrustServerCertificate , Keywords . TrustServerCertificate ) ;
hash . Add ( DbConnectionStringKeywords . TypeSystemVersion , Keywords . TypeSystemVersion ) ;
hash . Add ( DbConnectionStringKeywords . UserID , Keywords . UserID ) ;
hash . Add ( DbConnectionStringKeywords . UserInstance , Keywords . UserInstance ) ;
hash . Add ( DbConnectionStringKeywords . WorkstationID , Keywords . WorkstationID ) ;
hash . Add ( DbConnectionStringKeywords . ConnectRetryCount , Keywords . ConnectRetryCount ) ;
hash . Add ( DbConnectionStringKeywords . ConnectRetryInterval , Keywords . ConnectRetryInterval ) ;
hash . Add ( DbConnectionStringKeywords . Authentication , Keywords . Authentication ) ;
hash . Add ( DbConnectionStringKeywords . ColumnEncryptionSetting , Keywords . ColumnEncryptionSetting ) ;
hash . Add ( DbConnectionStringSynonyms . APP , Keywords . ApplicationName ) ;
hash . Add ( DbConnectionStringSynonyms . Async , Keywords . AsynchronousProcessing ) ;
hash . Add ( DbConnectionStringSynonyms . EXTENDEDPROPERTIES , Keywords . AttachDBFilename ) ;
hash . Add ( DbConnectionStringSynonyms . INITIALFILENAME , Keywords . AttachDBFilename ) ;
hash . Add ( DbConnectionStringSynonyms . CONNECTIONTIMEOUT , Keywords . ConnectTimeout ) ;
hash . Add ( DbConnectionStringSynonyms . TIMEOUT , Keywords . ConnectTimeout ) ;
hash . Add ( DbConnectionStringSynonyms . LANGUAGE , Keywords . CurrentLanguage ) ;
hash . Add ( DbConnectionStringSynonyms . ADDR , Keywords . DataSource ) ;
hash . Add ( DbConnectionStringSynonyms . ADDRESS , Keywords . DataSource ) ;
hash . Add ( DbConnectionStringSynonyms . NETWORKADDRESS , Keywords . DataSource ) ;
hash . Add ( DbConnectionStringSynonyms . SERVER , Keywords . DataSource ) ;
hash . Add ( DbConnectionStringSynonyms . DATABASE , Keywords . InitialCatalog ) ;
hash . Add ( DbConnectionStringSynonyms . TRUSTEDCONNECTION , Keywords . IntegratedSecurity ) ;
hash . Add ( DbConnectionStringSynonyms . ConnectionLifetime , Keywords . LoadBalanceTimeout ) ;
hash . Add ( DbConnectionStringSynonyms . NET , Keywords . NetworkLibrary ) ;
hash . Add ( DbConnectionStringSynonyms . NETWORK , Keywords . NetworkLibrary ) ;
hash . Add ( DbConnectionStringSynonyms . Pwd , Keywords . Password ) ;
hash . Add ( DbConnectionStringSynonyms . PERSISTSECURITYINFO , Keywords . PersistSecurityInfo ) ;
hash . Add ( DbConnectionStringSynonyms . UID , Keywords . UserID ) ;
hash . Add ( DbConnectionStringSynonyms . User , Keywords . UserID ) ;
hash . Add ( DbConnectionStringSynonyms . WSID , Keywords . WorkstationID ) ;
Debug . Assert ( ( KeywordsCount + SqlConnectionString . SynonymCount ) = = hash . Count , "initial expected size is incorrect" ) ;
_keywords = hash ;
}
public SqlConnectionStringBuilder ( ) : this ( ( string ) null ) {
}
public SqlConnectionStringBuilder ( string connectionString ) : base ( ) {
if ( ! ADP . IsEmpty ( connectionString ) ) {
ConnectionString = connectionString ;
}
}
public override object this [ string keyword ] {
get {
Keywords index = GetIndex ( keyword ) ;
return GetAt ( index ) ;
}
set {
if ( null ! = value ) {
Keywords index = GetIndex ( keyword ) ;
switch ( index ) {
case Keywords . ApplicationIntent : this . ApplicationIntent = ConvertToApplicationIntent ( keyword , value ) ; break ;
case Keywords . ApplicationName : ApplicationName = ConvertToString ( value ) ; break ;
case Keywords . AttachDBFilename : AttachDBFilename = ConvertToString ( value ) ; break ;
case Keywords . CurrentLanguage : CurrentLanguage = ConvertToString ( value ) ; break ;
case Keywords . DataSource : DataSource = ConvertToString ( value ) ; break ;
case Keywords . FailoverPartner : FailoverPartner = ConvertToString ( value ) ; break ;
case Keywords . InitialCatalog : InitialCatalog = ConvertToString ( value ) ; break ;
// case Keywords.NamedConnection: NamedConnection = ConvertToString(value); break;
case Keywords . NetworkLibrary : NetworkLibrary = ConvertToString ( value ) ; break ;
case Keywords . Password : Password = ConvertToString ( value ) ; break ;
case Keywords . UserID : UserID = ConvertToString ( value ) ; break ;
case Keywords . TransactionBinding : TransactionBinding = ConvertToString ( value ) ; break ;
case Keywords . TypeSystemVersion : TypeSystemVersion = ConvertToString ( value ) ; break ;
case Keywords . WorkstationID : WorkstationID = ConvertToString ( value ) ; break ;
case Keywords . ConnectTimeout : ConnectTimeout = ConvertToInt32 ( value ) ; break ;
case Keywords . LoadBalanceTimeout : LoadBalanceTimeout = ConvertToInt32 ( value ) ; break ;
case Keywords . MaxPoolSize : MaxPoolSize = ConvertToInt32 ( value ) ; break ;
case Keywords . MinPoolSize : MinPoolSize = ConvertToInt32 ( value ) ; break ;
case Keywords . PacketSize : PacketSize = ConvertToInt32 ( value ) ; break ;
case Keywords . IntegratedSecurity : IntegratedSecurity = ConvertToIntegratedSecurity ( value ) ; break ;
case Keywords . Authentication : Authentication = ConvertToAuthenticationType ( keyword , value ) ; break ;
case Keywords . ColumnEncryptionSetting : ColumnEncryptionSetting = ConvertToColumnEncryptionSetting ( keyword , value ) ; break ;
case Keywords . AsynchronousProcessing : AsynchronousProcessing = ConvertToBoolean ( value ) ; break ;
2016-11-10 13:04:39 +00:00
case Keywords . PoolBlockingPeriod : PoolBlockingPeriod = ConvertToPoolBlockingPeriod ( keyword , value ) ; break ;
2016-08-03 10:59:49 +00:00
#pragma warning disable 618 // Obsolete ConnectionReset
case Keywords . ConnectionReset : ConnectionReset = ConvertToBoolean ( value ) ; break ;
#pragma warning restore 618
case Keywords . ContextConnection : ContextConnection = ConvertToBoolean ( value ) ; break ;
case Keywords . Encrypt : Encrypt = ConvertToBoolean ( value ) ; break ;
case Keywords . TrustServerCertificate : TrustServerCertificate = ConvertToBoolean ( value ) ; break ;
case Keywords . Enlist : Enlist = ConvertToBoolean ( value ) ; break ;
case Keywords . MultipleActiveResultSets : MultipleActiveResultSets = ConvertToBoolean ( value ) ; break ;
case Keywords . MultiSubnetFailover : MultiSubnetFailover = ConvertToBoolean ( value ) ; break ;
case Keywords . TransparentNetworkIPResolution : TransparentNetworkIPResolution = ConvertToBoolean ( value ) ; break ;
case Keywords . PersistSecurityInfo : PersistSecurityInfo = ConvertToBoolean ( value ) ; break ;
case Keywords . Pooling : Pooling = ConvertToBoolean ( value ) ; break ;
case Keywords . Replication : Replication = ConvertToBoolean ( value ) ; break ;
case Keywords . UserInstance : UserInstance = ConvertToBoolean ( value ) ; break ;
case Keywords . ConnectRetryCount : ConnectRetryCount = ConvertToInt32 ( value ) ; break ;
case Keywords . ConnectRetryInterval : ConnectRetryInterval = ConvertToInt32 ( value ) ; break ;
default :
Debug . Assert ( false , "unexpected keyword" ) ;
throw ADP . KeywordNotSupported ( keyword ) ;
}
}
else {
Remove ( keyword ) ;
}
}
}
[DisplayName(DbConnectionStringKeywords.ApplicationIntent)]
[ResCategoryAttribute(Res.DataCategory_Initialization)]
[ResDescriptionAttribute(Res.DbConnectionString_ApplicationIntent)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public ApplicationIntent ApplicationIntent {
get { return _applicationIntent ; }
set {
if ( ! DbConnectionStringBuilderUtil . IsValidApplicationIntentValue ( value ) ) {
throw ADP . InvalidEnumerationValue ( typeof ( ApplicationIntent ) , ( int ) value ) ;
}
SetApplicationIntentValue ( value ) ;
_applicationIntent = value ;
}
}
[DisplayName(DbConnectionStringKeywords.ApplicationName)]
[ResCategoryAttribute(Res.DataCategory_Context)]
[ResDescriptionAttribute(Res.DbConnectionString_ApplicationName)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public string ApplicationName {
get { return _applicationName ; }
set {
SetValue ( DbConnectionStringKeywords . ApplicationName , value ) ;
_applicationName = value ;
}
}
[DisplayName(DbConnectionStringKeywords.AsynchronousProcessing)]
[ResCategoryAttribute(Res.DataCategory_Initialization)]
[ResDescriptionAttribute(Res.DbConnectionString_AsynchronousProcessing)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public bool AsynchronousProcessing {
get { return _asynchronousProcessing ; }
set {
SetValue ( DbConnectionStringKeywords . AsynchronousProcessing , value ) ;
_asynchronousProcessing = value ;
}
}
[DisplayName(DbConnectionStringKeywords.AttachDBFilename)]
[ResCategoryAttribute(Res.DataCategory_Source)]
[ResDescriptionAttribute(Res.DbConnectionString_AttachDBFilename)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
//
[Editor("System.Windows.Forms.Design.FileNameEditor, " + AssemblyRef.SystemDesign, "System.Drawing.Design.UITypeEditor, " + AssemblyRef.SystemDrawing)]
public string AttachDBFilename {
get { return _attachDBFilename ; }
set {
SetValue ( DbConnectionStringKeywords . AttachDBFilename , value ) ;
_attachDBFilename = value ;
}
}
2016-11-10 13:04:39 +00:00
[DisplayName(DbConnectionStringKeywords.PoolBlockingPeriod)]
[ResCategoryAttribute(Res.DataCategory_Pooling)]
[ResDescriptionAttribute(Res.DbConnectionString_PoolBlockingPeriod)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public PoolBlockingPeriod PoolBlockingPeriod
{
get { return _poolBlockingPeriod ; }
set
{
if ( ! DbConnectionStringBuilderUtil . IsValidPoolBlockingPeriodValue ( value ) )
{
throw ADP . InvalidEnumerationValue ( typeof ( PoolBlockingPeriod ) , ( int ) value ) ;
}
SetPoolBlockingPeriodValue ( value ) ;
_poolBlockingPeriod = value ;
}
}
2016-08-03 10:59:49 +00:00
[Browsable(false)]
[DisplayName(DbConnectionStringKeywords.ConnectionReset)]
[Obsolete("ConnectionReset has been deprecated. SqlConnection will ignore the 'connection reset' keyword and always reset the connection")] // SQLPT 41700
[ResCategoryAttribute(Res.DataCategory_Pooling)]
[ResDescriptionAttribute(Res.DbConnectionString_ConnectionReset)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public bool ConnectionReset {
get { return _connectionReset ; }
set {
SetValue ( DbConnectionStringKeywords . ConnectionReset , value ) ;
_connectionReset = value ;
}
}
[DisplayName(DbConnectionStringKeywords.ContextConnection)]
[ResCategoryAttribute(Res.DataCategory_Source)]
[ResDescriptionAttribute(Res.DbConnectionString_ContextConnection)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public bool ContextConnection {
get { return _contextConnection ; }
set {
SetValue ( DbConnectionStringKeywords . ContextConnection , value ) ;
_contextConnection = value ;
}
}
[DisplayName(DbConnectionStringKeywords.ConnectTimeout)]
[ResCategoryAttribute(Res.DataCategory_Initialization)]
[ResDescriptionAttribute(Res.DbConnectionString_ConnectTimeout)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public int ConnectTimeout {
get { return _connectTimeout ; }
set {
if ( value < 0 ) {
throw ADP . InvalidConnectionOptionValue ( DbConnectionStringKeywords . ConnectTimeout ) ;
}
SetValue ( DbConnectionStringKeywords . ConnectTimeout , value ) ;
_connectTimeout = value ;
}
}
[DisplayName(DbConnectionStringKeywords.CurrentLanguage)]
[ResCategoryAttribute(Res.DataCategory_Initialization)]
[ResDescriptionAttribute(Res.DbConnectionString_CurrentLanguage)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public string CurrentLanguage {
get { return _currentLanguage ; }
set {
SetValue ( DbConnectionStringKeywords . CurrentLanguage , value ) ;
_currentLanguage = value ;
}
}
[DisplayName(DbConnectionStringKeywords.DataSource)]
[ResCategoryAttribute(Res.DataCategory_Source)]
[ResDescriptionAttribute(Res.DbConnectionString_DataSource)]
[RefreshProperties(RefreshProperties.All)]
[TypeConverter(typeof(SqlDataSourceConverter))]
public string DataSource {
get { return _dataSource ; }
set {
SetValue ( DbConnectionStringKeywords . DataSource , value ) ;
_dataSource = value ;
}
}
[DisplayName(DbConnectionStringKeywords.Encrypt)]
[ResCategoryAttribute(Res.DataCategory_Security)]
[ResDescriptionAttribute(Res.DbConnectionString_Encrypt)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public bool Encrypt {
get { return _encrypt ; }
set {
SetValue ( DbConnectionStringKeywords . Encrypt , value ) ;
_encrypt = value ;
}
}
[DisplayName(DbConnectionStringKeywords.ColumnEncryptionSetting)]
[ResCategoryAttribute(Res.DataCategory_Security)]
[ResDescriptionAttribute(Res.TCE_DbConnectionString_ColumnEncryptionSetting)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public SqlConnectionColumnEncryptionSetting ColumnEncryptionSetting {
get { return _columnEncryptionSetting ; }
set {
if ( ! DbConnectionStringBuilderUtil . IsValidColumnEncryptionSetting ( value ) ) {
throw ADP . InvalidEnumerationValue ( typeof ( SqlConnectionColumnEncryptionSetting ) , ( int ) value ) ;
}
SetColumnEncryptionSettingValue ( value ) ;
_columnEncryptionSetting = value ;
}
}
[DisplayName(DbConnectionStringKeywords.TrustServerCertificate)]
[ResCategoryAttribute(Res.DataCategory_Security)]
[ResDescriptionAttribute(Res.DbConnectionString_TrustServerCertificate)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public bool TrustServerCertificate {
get { return _trustServerCertificate ; }
set {
SetValue ( DbConnectionStringKeywords . TrustServerCertificate , value ) ;
_trustServerCertificate = value ;
}
}
[DisplayName(DbConnectionStringKeywords.Enlist)]
[ResCategoryAttribute(Res.DataCategory_Pooling)]
[ResDescriptionAttribute(Res.DbConnectionString_Enlist)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public bool Enlist {
get { return _enlist ; }
set {
SetValue ( DbConnectionStringKeywords . Enlist , value ) ;
_enlist = value ;
}
}
[DisplayName(DbConnectionStringKeywords.FailoverPartner)]
[ResCategoryAttribute(Res.DataCategory_Source)]
[ResDescriptionAttribute(Res.DbConnectionString_FailoverPartner)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
[TypeConverter(typeof(SqlDataSourceConverter))]
public string FailoverPartner {
get { return _failoverPartner ; }
set {
SetValue ( DbConnectionStringKeywords . FailoverPartner , value ) ;
_failoverPartner = value ;
}
}
[DisplayName(DbConnectionStringKeywords.InitialCatalog)]
[ResCategoryAttribute(Res.DataCategory_Source)]
[ResDescriptionAttribute(Res.DbConnectionString_InitialCatalog)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
[TypeConverter(typeof(SqlInitialCatalogConverter))]
public string InitialCatalog {
get { return _initialCatalog ; }
set {
SetValue ( DbConnectionStringKeywords . InitialCatalog , value ) ;
_initialCatalog = value ;
}
}
[DisplayName(DbConnectionStringKeywords.IntegratedSecurity)]
[ResCategoryAttribute(Res.DataCategory_Security)]
[ResDescriptionAttribute(Res.DbConnectionString_IntegratedSecurity)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public bool IntegratedSecurity {
get { return _integratedSecurity ; }
set {
SetValue ( DbConnectionStringKeywords . IntegratedSecurity , value ) ;
_integratedSecurity = value ;
}
}
[DisplayName(DbConnectionStringKeywords.Authentication)]
[ResCategoryAttribute(Res.DataCategory_Security)]
[ResDescriptionAttribute(Res.DbConnectionString_Authentication)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public SqlAuthenticationMethod Authentication {
get { return _authentication ; }
set {
if ( ! DbConnectionStringBuilderUtil . IsValidAuthenticationTypeValue ( value ) ) {
throw ADP . InvalidEnumerationValue ( typeof ( SqlAuthenticationMethod ) , ( int ) value ) ;
}
SetAuthenticationValue ( value ) ;
_authentication = value ;
}
}
[DisplayName(DbConnectionStringKeywords.LoadBalanceTimeout)]
[ResCategoryAttribute(Res.DataCategory_Pooling)]
[ResDescriptionAttribute(Res.DbConnectionString_LoadBalanceTimeout)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public int LoadBalanceTimeout {
get { return _loadBalanceTimeout ; }
set {
if ( value < 0 ) {
throw ADP . InvalidConnectionOptionValue ( DbConnectionStringKeywords . LoadBalanceTimeout ) ;
}
SetValue ( DbConnectionStringKeywords . LoadBalanceTimeout , value ) ;
_loadBalanceTimeout = value ;
}
}
[DisplayName(DbConnectionStringKeywords.MaxPoolSize)]
[ResCategoryAttribute(Res.DataCategory_Pooling)]
[ResDescriptionAttribute(Res.DbConnectionString_MaxPoolSize)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public int MaxPoolSize {
get { return _maxPoolSize ; }
set {
if ( value < 1 ) {
throw ADP . InvalidConnectionOptionValue ( DbConnectionStringKeywords . MaxPoolSize ) ;
}
SetValue ( DbConnectionStringKeywords . MaxPoolSize , value ) ;
_maxPoolSize = value ;
}
}
[DisplayName(DbConnectionStringKeywords.ConnectRetryCount)]
[ResCategoryAttribute(Res.DataCategory_ConnectionResilency)]
[ResDescriptionAttribute(Res.DbConnectionString_ConnectRetryCount)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public int ConnectRetryCount {
get { return _connectRetryCount ; }
set {
if ( ( value < 0 ) | | ( value > 255 ) ) {
throw ADP . InvalidConnectionOptionValue ( DbConnectionStringKeywords . ConnectRetryCount ) ;
}
SetValue ( DbConnectionStringKeywords . ConnectRetryCount , value ) ;
_connectRetryCount = value ;
}
}
[DisplayName(DbConnectionStringKeywords.ConnectRetryInterval)]
[ResCategoryAttribute(Res.DataCategory_ConnectionResilency)]
[ResDescriptionAttribute(Res.DbConnectionString_ConnectRetryInterval)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public int ConnectRetryInterval {
get { return _connectRetryInterval ; }
set {
if ( ( value < 1 ) | | ( value > 60 ) ) {
throw ADP . InvalidConnectionOptionValue ( DbConnectionStringKeywords . ConnectRetryInterval ) ;
}
SetValue ( DbConnectionStringKeywords . ConnectRetryInterval , value ) ;
_connectRetryInterval = value ;
}
}
[DisplayName(DbConnectionStringKeywords.MinPoolSize)]
[ResCategoryAttribute(Res.DataCategory_Pooling)]
[ResDescriptionAttribute(Res.DbConnectionString_MinPoolSize)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public int MinPoolSize {
get { return _minPoolSize ; }
set {
if ( value < 0 ) {
throw ADP . InvalidConnectionOptionValue ( DbConnectionStringKeywords . MinPoolSize ) ;
}
SetValue ( DbConnectionStringKeywords . MinPoolSize , value ) ;
_minPoolSize = value ;
}
}
[DisplayName(DbConnectionStringKeywords.MultipleActiveResultSets)]
[ResCategoryAttribute(Res.DataCategory_Advanced)]
[ResDescriptionAttribute(Res.DbConnectionString_MultipleActiveResultSets)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public bool MultipleActiveResultSets {
get { return _multipleActiveResultSets ; }
set {
SetValue ( DbConnectionStringKeywords . MultipleActiveResultSets , value ) ;
_multipleActiveResultSets = value ;
}
}
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Justification = "Reviewed and Approved by UE")]
[DisplayName(DbConnectionStringKeywords.MultiSubnetFailover)]
[ResCategoryAttribute(Res.DataCategory_Source)]
[ResDescriptionAttribute(Res.DbConnectionString_MultiSubnetFailover)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public bool MultiSubnetFailover {
get { return _multiSubnetFailover ; }
set {
SetValue ( DbConnectionStringKeywords . MultiSubnetFailover , value ) ;
_multiSubnetFailover = value ;
}
}
[DisplayName(DbConnectionStringKeywords.TransparentNetworkIPResolution)]
[ResCategoryAttribute(Res.DataCategory_Source)]
[ResDescriptionAttribute(Res.DbConnectionString_TransparentNetworkIPResolution)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public bool TransparentNetworkIPResolution
{
get { return _transparentNetworkIPResolution ; }
set {
SetValue ( DbConnectionStringKeywords . TransparentNetworkIPResolution , value ) ;
_transparentNetworkIPResolution = value ;
}
}
/ *
[DisplayName(DbConnectionStringKeywords.NamedConnection)]
[ResCategoryAttribute(Res.DataCategory_NamedConnectionString)]
[ResDescriptionAttribute(Res.DbConnectionString_NamedConnection)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
[TypeConverter(typeof(NamedConnectionStringConverter))]
public string NamedConnection {
get { return _namedConnection ; }
set {
SetValue ( DbConnectionStringKeywords . NamedConnection , value ) ;
_namedConnection = value ;
}
}
* /
[DisplayName(DbConnectionStringKeywords.NetworkLibrary)]
[ResCategoryAttribute(Res.DataCategory_Advanced)]
[ResDescriptionAttribute(Res.DbConnectionString_NetworkLibrary)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
[TypeConverter(typeof(NetworkLibraryConverter))]
public string NetworkLibrary {
get { return _networkLibrary ; }
set {
if ( null ! = value ) {
switch ( value . Trim ( ) . ToLower ( CultureInfo . InvariantCulture ) ) {
case SqlConnectionString . NETLIB . AppleTalk :
value = SqlConnectionString . NETLIB . AppleTalk ;
break ;
case SqlConnectionString . NETLIB . BanyanVines :
value = SqlConnectionString . NETLIB . BanyanVines ;
break ;
case SqlConnectionString . NETLIB . IPXSPX :
value = SqlConnectionString . NETLIB . IPXSPX ;
break ;
case SqlConnectionString . NETLIB . Multiprotocol :
value = SqlConnectionString . NETLIB . Multiprotocol ;
break ;
case SqlConnectionString . NETLIB . NamedPipes :
value = SqlConnectionString . NETLIB . NamedPipes ;
break ;
case SqlConnectionString . NETLIB . SharedMemory :
value = SqlConnectionString . NETLIB . SharedMemory ;
break ;
case SqlConnectionString . NETLIB . TCPIP :
value = SqlConnectionString . NETLIB . TCPIP ;
break ;
case SqlConnectionString . NETLIB . VIA :
value = SqlConnectionString . NETLIB . VIA ;
break ;
default :
throw ADP . InvalidConnectionOptionValue ( DbConnectionStringKeywords . NetworkLibrary ) ;
}
}
SetValue ( DbConnectionStringKeywords . NetworkLibrary , value ) ;
_networkLibrary = value ;
}
}
[DisplayName(DbConnectionStringKeywords.PacketSize)]
[ResCategoryAttribute(Res.DataCategory_Advanced)]
[ResDescriptionAttribute(Res.DbConnectionString_PacketSize)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public int PacketSize {
get { return _packetSize ; }
set {
if ( ( value < TdsEnums . MIN_PACKET_SIZE ) | | ( TdsEnums . MAX_PACKET_SIZE < value ) ) {
throw SQL . InvalidPacketSizeValue ( ) ;
}
SetValue ( DbConnectionStringKeywords . PacketSize , value ) ;
_packetSize = value ;
}
}
[DisplayName(DbConnectionStringKeywords.Password)]
[PasswordPropertyTextAttribute(true)]
[ResCategoryAttribute(Res.DataCategory_Security)]
[ResDescriptionAttribute(Res.DbConnectionString_Password)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public string Password {
get { return _password ; }
set {
SetValue ( DbConnectionStringKeywords . Password , value ) ;
_password = value ;
}
}
[DisplayName(DbConnectionStringKeywords.PersistSecurityInfo)]
[ResCategoryAttribute(Res.DataCategory_Security)]
[ResDescriptionAttribute(Res.DbConnectionString_PersistSecurityInfo)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public bool PersistSecurityInfo {
get { return _persistSecurityInfo ; }
set {
SetValue ( DbConnectionStringKeywords . PersistSecurityInfo , value ) ;
_persistSecurityInfo = value ;
}
}
[DisplayName(DbConnectionStringKeywords.Pooling)]
[ResCategoryAttribute(Res.DataCategory_Pooling)]
[ResDescriptionAttribute(Res.DbConnectionString_Pooling)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public bool Pooling {
get { return _pooling ; }
set {
SetValue ( DbConnectionStringKeywords . Pooling , value ) ;
_pooling = value ;
}
}
[DisplayName(DbConnectionStringKeywords.Replication)]
[ResCategoryAttribute(Res.DataCategory_Replication)]
[ResDescriptionAttribute(Res.DbConnectionString_Replication )]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public bool Replication {
get { return _replication ; }
set {
SetValue ( DbConnectionStringKeywords . Replication , value ) ;
_replication = value ;
}
}
[DisplayName(DbConnectionStringKeywords.TransactionBinding)]
[ResCategoryAttribute(Res.DataCategory_Advanced)]
[ResDescriptionAttribute(Res.DbConnectionString_TransactionBinding)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public string TransactionBinding {
get { return _transactionBinding ; }
set {
SetValue ( DbConnectionStringKeywords . TransactionBinding , value ) ;
_transactionBinding = value ;
}
}
[DisplayName(DbConnectionStringKeywords.TypeSystemVersion)]
[ResCategoryAttribute(Res.DataCategory_Advanced)]
[ResDescriptionAttribute(Res.DbConnectionString_TypeSystemVersion)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public string TypeSystemVersion {
get { return _typeSystemVersion ; }
set {
SetValue ( DbConnectionStringKeywords . TypeSystemVersion , value ) ;
_typeSystemVersion = value ;
}
}
[DisplayName(DbConnectionStringKeywords.UserID)]
[ResCategoryAttribute(Res.DataCategory_Security)]
[ResDescriptionAttribute(Res.DbConnectionString_UserID)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public string UserID {
get { return _userID ; }
set {
SetValue ( DbConnectionStringKeywords . UserID , value ) ;
_userID = value ;
}
}
[DisplayName(DbConnectionStringKeywords.UserInstance)]
[ResCategoryAttribute(Res.DataCategory_Source)]
[ResDescriptionAttribute(Res.DbConnectionString_UserInstance)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public bool UserInstance {
get { return _userInstance ; }
set {
SetValue ( DbConnectionStringKeywords . UserInstance , value ) ;
_userInstance = value ;
}
}
[DisplayName(DbConnectionStringKeywords.WorkstationID)]
[ResCategoryAttribute(Res.DataCategory_Context)]
[ResDescriptionAttribute(Res.DbConnectionString_WorkstationID)]
[RefreshPropertiesAttribute(RefreshProperties.All)]
public string WorkstationID {
get { return _workstationID ; }
set {
SetValue ( DbConnectionStringKeywords . WorkstationID , value ) ;
_workstationID = value ;
}
}
public override bool IsFixedSize {
get {
return true ;
}
}
public override ICollection Keys {
get {
return new System . Data . Common . ReadOnlyCollection < string > ( _validKeywords ) ;
}
}
public override ICollection Values {
get {
// written this way so if the ordering of Keywords & _validKeywords changes
// this is one less place to maintain
object [ ] values = new object [ _validKeywords . Length ] ;
for ( int i = 0 ; i < values . Length ; + + i ) {
values [ i ] = GetAt ( ( Keywords ) i ) ;
}
return new System . Data . Common . ReadOnlyCollection < object > ( values ) ;
}
}
public override void Clear ( ) {
base . Clear ( ) ;
for ( int i = 0 ; i < _validKeywords . Length ; + + i ) {
Reset ( ( Keywords ) i ) ;
}
}
public override bool ContainsKey ( string keyword ) {
ADP . CheckArgumentNull ( keyword , "keyword" ) ;
return _keywords . ContainsKey ( keyword ) ;
}
private static bool ConvertToBoolean ( object value ) {
return DbConnectionStringBuilderUtil . ConvertToBoolean ( value ) ;
}
private static int ConvertToInt32 ( object value ) {
return DbConnectionStringBuilderUtil . ConvertToInt32 ( value ) ;
}
private static bool ConvertToIntegratedSecurity ( object value ) {
return DbConnectionStringBuilderUtil . ConvertToIntegratedSecurity ( value ) ;
}
private static string ConvertToString ( object value ) {
return DbConnectionStringBuilderUtil . ConvertToString ( value ) ;
}
private static ApplicationIntent ConvertToApplicationIntent ( string keyword , object value ) {
return DbConnectionStringBuilderUtil . ConvertToApplicationIntent ( keyword , value ) ;
}
private static SqlAuthenticationMethod ConvertToAuthenticationType ( string keyword , object value ) {
return DbConnectionStringBuilderUtil . ConvertToAuthenticationType ( keyword , value ) ;
}
2016-11-10 13:04:39 +00:00
private static PoolBlockingPeriod ConvertToPoolBlockingPeriod ( string keyword , object value )
{
return DbConnectionStringBuilderUtil . ConvertToPoolBlockingPeriod ( keyword , value ) ;
}
2016-08-03 10:59:49 +00:00
/// <summary>
/// Convert to SqlConnectionColumnEncryptionSetting.
/// </summary>
/// <param name="keyword"></param>
/// <param name="value"></param>
private static SqlConnectionColumnEncryptionSetting ConvertToColumnEncryptionSetting ( string keyword , object value ) {
return DbConnectionStringBuilderUtil . ConvertToColumnEncryptionSetting ( keyword , value ) ;
}
internal override string ConvertValueToString ( object value ) {
if ( value is SqlAuthenticationMethod ) {
return DbConnectionStringBuilderUtil . AuthenticationTypeToString ( ( SqlAuthenticationMethod ) value ) ;
}
else {
return base . ConvertValueToString ( value ) ;
}
}
private object GetAt ( Keywords index ) {
switch ( index ) {
case Keywords . ApplicationIntent : return this . ApplicationIntent ;
case Keywords . ApplicationName : return ApplicationName ;
case Keywords . AsynchronousProcessing : return AsynchronousProcessing ;
case Keywords . AttachDBFilename : return AttachDBFilename ;
2016-11-10 13:04:39 +00:00
case Keywords . PoolBlockingPeriod : return PoolBlockingPeriod ;
2016-08-03 10:59:49 +00:00
case Keywords . ConnectTimeout : return ConnectTimeout ;
#pragma warning disable 618 // Obsolete ConnectionReset
case Keywords . ConnectionReset : return ConnectionReset ;
#pragma warning restore 618
case Keywords . ContextConnection : return ContextConnection ;
case Keywords . CurrentLanguage : return CurrentLanguage ;
case Keywords . DataSource : return DataSource ;
case Keywords . Encrypt : return Encrypt ;
case Keywords . Enlist : return Enlist ;
case Keywords . FailoverPartner : return FailoverPartner ;
case Keywords . InitialCatalog : return InitialCatalog ;
case Keywords . IntegratedSecurity : return IntegratedSecurity ;
case Keywords . LoadBalanceTimeout : return LoadBalanceTimeout ;
case Keywords . MultipleActiveResultSets : return MultipleActiveResultSets ;
case Keywords . MaxPoolSize : return MaxPoolSize ;
case Keywords . MinPoolSize : return MinPoolSize ;
case Keywords . MultiSubnetFailover : return MultiSubnetFailover ;
case Keywords . TransparentNetworkIPResolution : return TransparentNetworkIPResolution ;
// case Keywords.NamedConnection: return NamedConnection;
case Keywords . NetworkLibrary : return NetworkLibrary ;
case Keywords . PacketSize : return PacketSize ;
case Keywords . Password : return Password ;
case Keywords . PersistSecurityInfo : return PersistSecurityInfo ;
case Keywords . Pooling : return Pooling ;
case Keywords . Replication : return Replication ;
case Keywords . TransactionBinding : return TransactionBinding ;
case Keywords . TrustServerCertificate : return TrustServerCertificate ;
case Keywords . TypeSystemVersion : return TypeSystemVersion ;
case Keywords . UserID : return UserID ;
case Keywords . UserInstance : return UserInstance ;
case Keywords . WorkstationID : return WorkstationID ;
case Keywords . ConnectRetryCount : return ConnectRetryCount ;
case Keywords . ConnectRetryInterval : return ConnectRetryInterval ;
case Keywords . Authentication : return Authentication ;
case Keywords . ColumnEncryptionSetting : return ColumnEncryptionSetting ;
default :
Debug . Assert ( false , "unexpected keyword" ) ;
throw ADP . KeywordNotSupported ( _validKeywords [ ( int ) index ] ) ;
}
}
private Keywords GetIndex ( string keyword ) {
ADP . CheckArgumentNull ( keyword , "keyword" ) ;
Keywords index ;
if ( _keywords . TryGetValue ( keyword , out index ) ) {
return index ;
}
throw ADP . KeywordNotSupported ( keyword ) ;
}
protected override void GetProperties ( Hashtable propertyDescriptors ) {
foreach ( PropertyDescriptor reflected in TypeDescriptor . GetProperties ( this , true ) ) {
bool refreshOnChange = false ;
bool isReadonly = false ;
string displayName = reflected . DisplayName ;
// 'Password' & 'User ID' will be readonly if 'Integrated Security' is true
if ( DbConnectionStringKeywords . IntegratedSecurity = = displayName ) {
refreshOnChange = true ;
isReadonly = reflected . IsReadOnly ;
}
else if ( ( DbConnectionStringKeywords . Password = = displayName ) | |
( DbConnectionStringKeywords . UserID = = displayName ) ) {
isReadonly = IntegratedSecurity ;
}
else {
continue ;
}
Attribute [ ] attributes = GetAttributesFromCollection ( reflected . Attributes ) ;
DbConnectionStringBuilderDescriptor descriptor = new DbConnectionStringBuilderDescriptor ( reflected . Name ,
reflected . ComponentType , reflected . PropertyType , isReadonly , attributes ) ;
descriptor . RefreshOnChange = refreshOnChange ;
propertyDescriptors [ displayName ] = descriptor ;
}
base . GetProperties ( propertyDescriptors ) ;
}
public override bool Remove ( string keyword ) {
ADP . CheckArgumentNull ( keyword , "keyword" ) ;
Keywords index ;
if ( _keywords . TryGetValue ( keyword , out index ) ) {
if ( base . Remove ( _validKeywords [ ( int ) index ] ) ) {
Reset ( index ) ;
return true ;
}
}
return false ;
}
private void Reset ( Keywords index ) {
switch ( index ) {
case Keywords . ApplicationIntent :
_applicationIntent = DbConnectionStringDefaults . ApplicationIntent ;
break ;
case Keywords . ApplicationName :
_applicationName = DbConnectionStringDefaults . ApplicationName ;
break ;
case Keywords . AsynchronousProcessing :
_asynchronousProcessing = DbConnectionStringDefaults . AsynchronousProcessing ;
break ;
case Keywords . AttachDBFilename :
_attachDBFilename = DbConnectionStringDefaults . AttachDBFilename ;
break ;
case Keywords . Authentication :
_authentication = DbConnectionStringDefaults . Authentication ;
break ;
2016-11-10 13:04:39 +00:00
case Keywords . PoolBlockingPeriod :
_poolBlockingPeriod = DbConnectionStringDefaults . PoolBlockingPeriod ;
break ;
2016-08-03 10:59:49 +00:00
case Keywords . ConnectTimeout :
_connectTimeout = DbConnectionStringDefaults . ConnectTimeout ;
break ;
case Keywords . ConnectionReset :
_connectionReset = DbConnectionStringDefaults . ConnectionReset ;
break ;
case Keywords . ContextConnection :
_contextConnection = DbConnectionStringDefaults . ContextConnection ;
break ;
case Keywords . CurrentLanguage :
_currentLanguage = DbConnectionStringDefaults . CurrentLanguage ;
break ;
case Keywords . DataSource :
_dataSource = DbConnectionStringDefaults . DataSource ;
break ;
case Keywords . Encrypt :
_encrypt = DbConnectionStringDefaults . Encrypt ;
break ;
case Keywords . Enlist :
_enlist = DbConnectionStringDefaults . Enlist ;
break ;
case Keywords . FailoverPartner :
_failoverPartner = DbConnectionStringDefaults . FailoverPartner ;
break ;
case Keywords . InitialCatalog :
_initialCatalog = DbConnectionStringDefaults . InitialCatalog ;
break ;
case Keywords . IntegratedSecurity :
_integratedSecurity = DbConnectionStringDefaults . IntegratedSecurity ;
break ;
case Keywords . LoadBalanceTimeout :
_loadBalanceTimeout = DbConnectionStringDefaults . LoadBalanceTimeout ;
break ;
case Keywords . MultipleActiveResultSets :
_multipleActiveResultSets = DbConnectionStringDefaults . MultipleActiveResultSets ;
break ;
case Keywords . MaxPoolSize :
_maxPoolSize = DbConnectionStringDefaults . MaxPoolSize ;
break ;
case Keywords . MinPoolSize :
_minPoolSize = DbConnectionStringDefaults . MinPoolSize ;
break ;
case Keywords . MultiSubnetFailover :
_multiSubnetFailover = DbConnectionStringDefaults . MultiSubnetFailover ;
break ;
case Keywords . TransparentNetworkIPResolution :
_transparentNetworkIPResolution = DbConnectionStringDefaults . TransparentNetworkIPResolution ;
break ;
// case Keywords.NamedConnection:
// _namedConnection = DbConnectionStringDefaults.NamedConnection;
// break;
case Keywords . NetworkLibrary :
_networkLibrary = DbConnectionStringDefaults . NetworkLibrary ;
break ;
case Keywords . PacketSize :
_packetSize = DbConnectionStringDefaults . PacketSize ;
break ;
case Keywords . Password :
_password = DbConnectionStringDefaults . Password ;
break ;
case Keywords . PersistSecurityInfo :
_persistSecurityInfo = DbConnectionStringDefaults . PersistSecurityInfo ;
break ;
case Keywords . Pooling :
_pooling = DbConnectionStringDefaults . Pooling ;
break ;
case Keywords . ConnectRetryCount :
_connectRetryCount = DbConnectionStringDefaults . ConnectRetryCount ;
break ;
case Keywords . ConnectRetryInterval :
_connectRetryInterval = DbConnectionStringDefaults . ConnectRetryInterval ;
break ;
case Keywords . Replication :
_replication = DbConnectionStringDefaults . Replication ;
break ;
case Keywords . TransactionBinding :
_transactionBinding = DbConnectionStringDefaults . TransactionBinding ;
break ;
case Keywords . TrustServerCertificate :
_trustServerCertificate = DbConnectionStringDefaults . TrustServerCertificate ;
break ;
case Keywords . TypeSystemVersion :
_typeSystemVersion = DbConnectionStringDefaults . TypeSystemVersion ;
break ;
case Keywords . UserID :
_userID = DbConnectionStringDefaults . UserID ;
break ;
case Keywords . UserInstance :
_userInstance = DbConnectionStringDefaults . UserInstance ;
break ;
case Keywords . WorkstationID :
_workstationID = DbConnectionStringDefaults . WorkstationID ;
break ;
case Keywords . ColumnEncryptionSetting :
_columnEncryptionSetting = DbConnectionStringDefaults . ColumnEncryptionSetting ;
break ;
default :
Debug . Assert ( false , "unexpected keyword" ) ;
throw ADP . KeywordNotSupported ( _validKeywords [ ( int ) index ] ) ;
}
}
private void SetValue ( string keyword , bool value ) {
base [ keyword ] = value . ToString ( ( System . IFormatProvider ) null ) ;
}
private void SetValue ( string keyword , int value ) {
base [ keyword ] = value . ToString ( ( System . IFormatProvider ) null ) ;
}
private void SetValue ( string keyword , string value ) {
ADP . CheckArgumentNull ( value , keyword ) ;
base [ keyword ] = value ;
}
private void SetApplicationIntentValue ( ApplicationIntent value ) {
Debug . Assert ( DbConnectionStringBuilderUtil . IsValidApplicationIntentValue ( value ) , "Invalid value for ApplicationIntent" ) ;
base [ DbConnectionStringKeywords . ApplicationIntent ] = DbConnectionStringBuilderUtil . ApplicationIntentToString ( value ) ;
}
2016-11-10 13:04:39 +00:00
private void SetPoolBlockingPeriodValue ( PoolBlockingPeriod value )
{
Debug . Assert ( DbConnectionStringBuilderUtil . IsValidPoolBlockingPeriodValue ( value ) , "Invalid value for PoolBlockingPeriod" ) ;
base [ DbConnectionStringKeywords . PoolBlockingPeriod ] = DbConnectionStringBuilderUtil . PoolBlockingPeriodToString ( value ) ;
}
2016-08-03 10:59:49 +00:00
private void SetAuthenticationValue ( SqlAuthenticationMethod value ) {
Debug . Assert ( DbConnectionStringBuilderUtil . IsValidAuthenticationTypeValue ( value ) , "Invalid value for AuthenticationType" ) ;
base [ DbConnectionStringKeywords . Authentication ] = DbConnectionStringBuilderUtil . AuthenticationTypeToString ( value ) ;
}
private void SetColumnEncryptionSettingValue ( SqlConnectionColumnEncryptionSetting value ) {
Debug . Assert ( DbConnectionStringBuilderUtil . IsValidColumnEncryptionSetting ( value ) , "Invalid value for SqlConnectionColumnEncryptionSetting" ) ;
base [ DbConnectionStringKeywords . ColumnEncryptionSetting ] = DbConnectionStringBuilderUtil . ColumnEncryptionSettingToString ( value ) ;
}
public override bool ShouldSerialize ( string keyword ) {
ADP . CheckArgumentNull ( keyword , "keyword" ) ;
Keywords index ;
return _keywords . TryGetValue ( keyword , out index ) & & base . ShouldSerialize ( _validKeywords [ ( int ) index ] ) ;
}
public override bool TryGetValue ( string keyword , out object value ) {
Keywords index ;
if ( _keywords . TryGetValue ( keyword , out index ) ) {
value = GetAt ( index ) ;
return true ;
}
value = null ;
return false ;
}
private sealed class NetworkLibraryConverter : TypeConverter {
// private const string AppleTalk = "Apple Talk (DBMSADSN)"; Invalid protocals
// private const string BanyanVines = "Banyan VINES (DBMSVINN)";
// private const string IPXSPX = "NWLink IPX/SPX (DBMSSPXN)";
// private const string Multiprotocol = "Multiprotocol (DBMSRPCN)";
private const string NamedPipes = "Named Pipes (DBNMPNTW)" ; // valid protocols
private const string SharedMemory = "Shared Memory (DBMSLPCN)" ;
private const string TCPIP = "TCP/IP (DBMSSOCN)" ;
private const string VIA = "VIA (DBMSGNET)" ;
// these are correctly non-static, property grid will cache an instance
private StandardValuesCollection _standardValues ;
// converter classes should have public ctor
public NetworkLibraryConverter ( ) {
}
public override bool CanConvertFrom ( ITypeDescriptorContext context , Type sourceType ) {
// Only know how to convert from a string
return ( ( typeof ( string ) = = sourceType ) | | base . CanConvertFrom ( context , sourceType ) ) ;
}
public override object ConvertFrom ( ITypeDescriptorContext context , System . Globalization . CultureInfo culture , object value ) {
string svalue = ( value as string ) ;
if ( null ! = svalue ) {
svalue = svalue . Trim ( ) ;
if ( StringComparer . OrdinalIgnoreCase . Equals ( svalue , NamedPipes ) ) {
return SqlConnectionString . NETLIB . NamedPipes ;
}
else if ( StringComparer . OrdinalIgnoreCase . Equals ( svalue , SharedMemory ) ) {
return SqlConnectionString . NETLIB . SharedMemory ;
}
else if ( StringComparer . OrdinalIgnoreCase . Equals ( svalue , TCPIP ) ) {
return SqlConnectionString . NETLIB . TCPIP ;
}
else if ( StringComparer . OrdinalIgnoreCase . Equals ( svalue , VIA ) ) {
return SqlConnectionString . NETLIB . VIA ;
}
else {
return svalue ;
}
}
return base . ConvertFrom ( context , culture , value ) ;
}
public override bool CanConvertTo ( ITypeDescriptorContext context , Type destinationType ) {
return ( ( typeof ( string ) = = destinationType ) | | base . CanConvertTo ( context , destinationType ) ) ;
}
public override object ConvertTo ( ITypeDescriptorContext context , System . Globalization . CultureInfo culture , object value , Type destinationType ) {
string svalue = ( value as string ) ;
if ( ( null ! = svalue ) & & ( destinationType = = typeof ( string ) ) ) {
switch ( svalue . Trim ( ) . ToLower ( CultureInfo . InvariantCulture ) ) {
case SqlConnectionString . NETLIB . NamedPipes :
return NamedPipes ;
case SqlConnectionString . NETLIB . SharedMemory :
return SharedMemory ;
case SqlConnectionString . NETLIB . TCPIP :
return TCPIP ;
case SqlConnectionString . NETLIB . VIA :
return VIA ;
default :
return svalue ;
}
}
return base . ConvertTo ( context , culture , value , destinationType ) ;
}
public override bool GetStandardValuesSupported ( ITypeDescriptorContext context ) {
return true ;
}
public override bool GetStandardValuesExclusive ( ITypeDescriptorContext context ) {
return false ;
}
public override StandardValuesCollection GetStandardValues ( ITypeDescriptorContext context ) {
SqlConnectionStringBuilder constr = null ;
if ( null ! = context ) {
constr = ( context . Instance as SqlConnectionStringBuilder ) ;
}
StandardValuesCollection standardValues = _standardValues ;
if ( null = = standardValues ) {
string [ ] names = new string [ ] {
NamedPipes ,
SharedMemory ,
TCPIP ,
VIA ,
} ;
standardValues = new StandardValuesCollection ( names ) ;
_standardValues = standardValues ;
}
return standardValues ;
}
}
private sealed class SqlDataSourceConverter : StringConverter {
private StandardValuesCollection _standardValues ;
// converter classes should have public ctor
public SqlDataSourceConverter ( ) {
}
public override bool GetStandardValuesSupported ( ITypeDescriptorContext context ) {
return true ;
}
public override bool GetStandardValuesExclusive ( ITypeDescriptorContext context ) {
return false ;
}
public override StandardValuesCollection GetStandardValues ( ITypeDescriptorContext context ) {
StandardValuesCollection dataSourceNames = _standardValues ;
if ( null = = _standardValues ) {
// Get the sources rowset for the SQLOLEDB enumerator
DataTable table = SqlClientFactory . Instance . CreateDataSourceEnumerator ( ) . GetDataSources ( ) ;
DataColumn serverName = table . Columns [ System . Data . Sql . SqlDataSourceEnumerator . ServerName ] ;
DataColumn instanceName = table . Columns [ System . Data . Sql . SqlDataSourceEnumerator . InstanceName ] ;
DataRowCollection rows = table . Rows ;
string [ ] serverNames = new string [ rows . Count ] ;
for ( int i = 0 ; i < serverNames . Length ; + + i ) {
string server = rows [ i ] [ serverName ] as string ;
string instance = rows [ i ] [ instanceName ] as string ;
if ( ( null = = instance ) | | ( 0 = = instance . Length ) | | ( "MSSQLSERVER" = = instance ) ) {
serverNames [ i ] = server ;
}
else {
serverNames [ i ] = server + @"\" + instance ;
}
}
Array . Sort < string > ( serverNames ) ;
// Create the standard values collection that contains the sources
dataSourceNames = new StandardValuesCollection ( serverNames ) ;
_standardValues = dataSourceNames ;
}
return dataSourceNames ;
}
}
private sealed class SqlInitialCatalogConverter : StringConverter {
// converter classes should have public ctor
public SqlInitialCatalogConverter ( ) {
}
public override bool GetStandardValuesSupported ( ITypeDescriptorContext context ) {
return GetStandardValuesSupportedInternal ( context ) ;
}
private bool GetStandardValuesSupportedInternal ( ITypeDescriptorContext context ) {
// Only say standard values are supported if the connection string has enough
// information set to instantiate a connection and retrieve a list of databases
bool flag = false ;
if ( null ! = context ) {
SqlConnectionStringBuilder constr = ( context . Instance as SqlConnectionStringBuilder ) ;
if ( null ! = constr ) {
if ( ( 0 < constr . DataSource . Length ) & & ( constr . IntegratedSecurity | | ( 0 < constr . UserID . Length ) ) ) {
flag = true ;
}
}
}
return flag ;
}
public override bool GetStandardValuesExclusive ( ITypeDescriptorContext context ) {
// Although theoretically this could be true, some people may want to just type in a name
return false ;
}
public override StandardValuesCollection GetStandardValues ( ITypeDescriptorContext context ) {
// There can only be standard values if the connection string is in a state that might
// be able to instantiate a connection
if ( GetStandardValuesSupportedInternal ( context ) ) {
// Create an array list to store the database names
List < string > values = new List < string > ( ) ;
try {
SqlConnectionStringBuilder constr = ( SqlConnectionStringBuilder ) context . Instance ;
// Create a connection
using ( SqlConnection connection = new SqlConnection ( ) ) {
// Create a basic connection string from current property values
connection . ConnectionString = constr . ConnectionString ;
// Try to open the connection
connection . Open ( ) ;
DataTable databaseTable = connection . GetSchema ( "DATABASES" ) ;
foreach ( DataRow row in databaseTable . Rows ) {
string dbName = ( string ) row [ "database_name" ] ;
values . Add ( dbName ) ;
}
}
}
catch ( SqlException e ) {
ADP . TraceExceptionWithoutRethrow ( e ) ;
// silently fail
}
// Return values as a StandardValuesCollection
return new StandardValuesCollection ( values ) ;
}
return null ;
}
}
sealed internal class SqlConnectionStringBuilderConverter : ExpandableObjectConverter {
// converter classes should have public ctor
public SqlConnectionStringBuilderConverter ( ) {
}
override public bool CanConvertTo ( ITypeDescriptorContext context , Type destinationType ) {
if ( typeof ( System . ComponentModel . Design . Serialization . InstanceDescriptor ) = = destinationType ) {
return true ;
}
return base . CanConvertTo ( context , destinationType ) ;
}
override public object ConvertTo ( ITypeDescriptorContext context , CultureInfo culture , object value , Type destinationType ) {
if ( destinationType = = null ) {
throw ADP . ArgumentNull ( "destinationType" ) ;
}
if ( typeof ( System . ComponentModel . Design . Serialization . InstanceDescriptor ) = = destinationType ) {
SqlConnectionStringBuilder obj = ( value as SqlConnectionStringBuilder ) ;
if ( null ! = obj ) {
return ConvertToInstanceDescriptor ( obj ) ;
}
}
return base . ConvertTo ( context , culture , value , destinationType ) ;
}
private System . ComponentModel . Design . Serialization . InstanceDescriptor ConvertToInstanceDescriptor ( SqlConnectionStringBuilder options ) {
Type [ ] ctorParams = new Type [ ] { typeof ( string ) } ;
object [ ] ctorValues = new object [ ] { options . ConnectionString } ;
System . Reflection . ConstructorInfo ctor = typeof ( SqlConnectionStringBuilder ) . GetConstructor ( ctorParams ) ;
return new System . ComponentModel . Design . Serialization . InstanceDescriptor ( ctor , ctorValues ) ;
}
}
}
}