/// <summary> /// Initializes a new instance of the <see cref="FindForeignKeysQuery"/> class. /// </summary> /// <param name="connectionPool">DbConnectionPool to use for creating connections to execute the query on.</param> public MySqlFindForeignKeysQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { }
/// <summary> /// Initializes a new instance of the <see cref="InsertQuestRequireStartQuestQuery"/> class. /// </summary> /// <param name="connectionPool"><see cref="DbConnectionPool"/> to use for creating connections to /// execute the query on.</param> public InsertQuestRequireStartQuestQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { }
override protected DbConnectionInternal CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) { return(CreateConnection(options, poolKey, poolGroupProviderInfo, pool, owningConnection, userOptions: null)); }
/// <summary> /// Initializes a new instance of the <see cref="PeerTradingRemoveItemQuery"/> class. /// </summary> /// <param name="connectionPool"><see cref="DbConnectionPool"/> to use for creating connections to /// execute the query on.</param> public PeerTradingRemoveItemQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { QueryAsserts.ArePrimaryKeys(ActiveTradeItemTable.DbKeyColumns, "item_id"); }
override protected DbConnectionInternal CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) { SqlConnectionString opt = (SqlConnectionString)options; SqlConnectionPoolKey key = (SqlConnectionPoolKey)poolKey; SqlInternalConnection result = null; SessionData recoverySessionData = null; SqlConnection sqlOwningConnection = (SqlConnection)owningConnection; bool applyTransientFaultHandling = sqlOwningConnection != null ? sqlOwningConnection._applyTransientFaultHandling : false; SqlConnectionString userOpt = null; if (userOptions != null) { userOpt = (SqlConnectionString)userOptions; } else if (sqlOwningConnection != null) { userOpt = (SqlConnectionString)(sqlOwningConnection.UserConnectionOptions); } if (sqlOwningConnection != null) { recoverySessionData = sqlOwningConnection._recoverySessionData; } bool redirectedUserInstance = false; DbConnectionPoolIdentity identity = null; // Pass DbConnectionPoolIdentity to SqlInternalConnectionTds if using integrated security. // Used by notifications. if (opt.IntegratedSecurity) { if (pool != null) { identity = pool.Identity; } else { identity = DbConnectionPoolIdentity.GetCurrent(); } } // FOLLOWING IF BLOCK IS ENTIRELY FOR SSE USER INSTANCES // If "user instance=true" is in the connection string, we're using SSE user instances if (opt.UserInstance) { // opt.DataSource is used to create the SSE connection redirectedUserInstance = true; string instanceName; if ((null == pool) || (null != pool && pool.Count <= 0)) { // Non-pooled or pooled and no connections in the pool. SqlInternalConnectionTds sseConnection = null; try { // We throw an exception in case of a failure // NOTE: Cloning connection option opt to set 'UserInstance=True' and 'Enlist=False' // This first connection is established to SqlExpress to get the instance name // of the UserInstance. SqlConnectionString sseopt = new SqlConnectionString(opt, opt.DataSource, userInstance: true, setEnlistValue: false); sseConnection = new SqlInternalConnectionTds(identity, sseopt, null, false, applyTransientFaultHandling: applyTransientFaultHandling); // NOTE: Retrieve <UserInstanceName> here. This user instance name will be used below to connect to the Sql Express User Instance. instanceName = sseConnection.InstanceName; if (!instanceName.StartsWith("\\\\.\\", StringComparison.Ordinal)) { throw SQL.NonLocalSSEInstance(); } if (null != pool) { // Pooled connection - cache result SqlConnectionPoolProviderInfo providerInfo = (SqlConnectionPoolProviderInfo)pool.ProviderInfo; // No lock since we are already in creation mutex providerInfo.InstanceName = instanceName; } } finally { if (null != sseConnection) { sseConnection.Dispose(); } } } else { // Cached info from pool. SqlConnectionPoolProviderInfo providerInfo = (SqlConnectionPoolProviderInfo)pool.ProviderInfo; // No lock since we are already in creation mutex instanceName = providerInfo.InstanceName; } // NOTE: Here connection option opt is cloned to set 'instanceName=<UserInstanceName>' that was // retrieved from the previous SSE connection. For this UserInstance connection 'Enlist=True'. // options immutable - stored in global hash - don't modify opt = new SqlConnectionString(opt, instanceName, userInstance: false, setEnlistValue: null); poolGroupProviderInfo = null; // null so we do not pass to constructor below... } result = new SqlInternalConnectionTds(identity, opt, poolGroupProviderInfo, redirectedUserInstance, userOpt, recoverySessionData, applyTransientFaultHandling: applyTransientFaultHandling); return(result); }
/// <summary> /// Initializes a new instance of the <see cref="InsertAccountBanQuery"/> class. /// </summary> /// <param name="connectionPool">The connection pool.</param> public InsertAccountBanQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { QueryAsserts.ContainsColumns(AccountBanTable.DbColumns, "account_id", "start_time", "end_time", "issued_by", "reason", "expired"); }
/// <summary> /// Initializes a new instance of the <see cref="CreateUserOnAccountQuery"/> class. /// </summary> /// <param name="connectionPool">The connection pool.</param> public CreateUserOnAccountQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { }
/// <summary> /// Initializes a new instance of the <see cref="PeerTradingRemoveCashQuery"/> class. /// </summary> /// <param name="connectionPool">The <see cref="DbConnectionPool"/> to use for creating connections to execute the query on.</param> public PeerTradingRemoveCashQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { QueryAsserts.ArePrimaryKeys(ActiveTradeCashTable.DbKeyColumns, "character_id"); }
/// <summary> /// Initializes a new instance of the <see cref="SelectQuestRewardItemQuery"/> class. /// </summary> /// <param name="connectionPool">The connection pool.</param> public SelectQuestRewardItemQuery(DbConnectionPool connectionPool) : base(connectionPool, QuestRewardItemTable.TableName) { }
/// <summary> /// Initializes a new instance of the <see cref="DeleteCharacterTemplateInventoryForCharacterQuery"/> class. /// </summary> /// <param name="connectionPool">The connection pool.</param> public DeleteCharacterTemplateInventoryForCharacterQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { }
/// <summary> /// Initializes a new instance of the <see cref="InsertCharacterTemplateSkillQuery"/> class. /// </summary> /// <param name="connectionPool">The connection pool.</param> public InsertCharacterTemplateSkillQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { QueryAsserts.AreColumns(CharacterTemplateSkillTable.DbColumns, "character_template_id", "skill_id"); }
/// <summary> /// Initializes a new instance of the <see cref="SelectShopItemsQuery"/> class. /// </summary> /// <param name="connectionPool">The connection pool.</param> public SelectShopItemsQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { QueryAsserts.ContainsColumns(ShopItemTable.DbColumns, "shop_id"); }
override protected DbConnectionInternal CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) { SqlConnectionString opt = (SqlConnectionString)options; SqlConnectionPoolKey key = (SqlConnectionPoolKey)poolKey; SqlInternalConnection result = null; SessionData recoverySessionData = null; SqlConnectionString userOpt = null; if (userOptions != null) { userOpt = (SqlConnectionString)userOptions; } else if (owningConnection != null) { userOpt = (SqlConnectionString)(((SqlConnection)owningConnection).UserConnectionOptions); } if (owningConnection != null) { recoverySessionData = ((SqlConnection)owningConnection)._recoverySessionData; } if (opt.ContextConnection) { result = GetContextConnection(opt, poolGroupProviderInfo); } else { bool redirectedUserInstance = false; DbConnectionPoolIdentity identity = null; // Pass DbConnectionPoolIdentity to SqlInternalConnectionTds if using integrated security. // Used by notifications. if (opt.IntegratedSecurity || opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryIntegrated) { if (pool != null) { identity = pool.Identity; } else { identity = DbConnectionPoolIdentity.GetCurrent(); } } // FOLLOWING IF BLOCK IS ENTIRELY FOR SSE USER INSTANCES // If "user instance=true" is in the connection string, we're using SSE user instances if (opt.UserInstance) { // opt.DataSource is used to create the SSE connection redirectedUserInstance = true; string instanceName; if ((null == pool) || (null != pool && pool.Count <= 0)) // Non-pooled or pooled and no connections in the pool. { SqlInternalConnectionTds sseConnection = null; try { // What about a failure - throw? YES! // SqlConnectionString sseopt = new SqlConnectionString(opt, opt.DataSource, true /* user instance=true */, false /* set Enlist = false */); sseConnection = new SqlInternalConnectionTds(identity, sseopt, key.Credential, null, "", null, false); // NOTE: Retrieve <UserInstanceName> here. This user instance name will be used below to connect to the Sql Express User Instance. instanceName = sseConnection.InstanceName; if (!instanceName.StartsWith("\\\\.\\", StringComparison.Ordinal)) { throw SQL.NonLocalSSEInstance(); } if (null != pool) // Pooled connection - cache result { SqlConnectionPoolProviderInfo providerInfo = (SqlConnectionPoolProviderInfo)pool.ProviderInfo; // No lock since we are already in creation mutex providerInfo.InstanceName = instanceName; } } finally { if (null != sseConnection) { sseConnection.Dispose(); } } } else // Cached info from pool. { SqlConnectionPoolProviderInfo providerInfo = (SqlConnectionPoolProviderInfo)pool.ProviderInfo; // No lock since we are already in creation mutex instanceName = providerInfo.InstanceName; } // NOTE: Here connection option opt is cloned to set 'instanceName=<UserInstanceName>' that was // retrieved from the previous SSE connection. For this UserInstance connection 'Enlist=True'. // options immutable - stored in global hash - don't modify opt = new SqlConnectionString(opt, instanceName, false /* user instance=false */, null /* do not modify the Enlist value */); poolGroupProviderInfo = null; // null so we do not pass to constructor below... } result = new SqlInternalConnectionTds(identity, opt, key.Credential, poolGroupProviderInfo, "", null, redirectedUserInstance, userOpt, recoverySessionData, pool, key.AccessToken); } return(result); }
/// <summary> /// Initializes a new instance of the <see cref="InsertCharacterTemplateQuery"/> class. /// </summary> /// <param name="connectionPool"><see cref="DbConnectionPool"/> to use for creating connections to /// execute the query on.</param> public InsertCharacterTemplateQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { }
protected override DbConnectionInternal CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) { DbConnectionInternal result = new OdbcConnectionOpen(owningObject as OdbcConnection, options as OdbcConnectionString); return(result); }
/// <summary> /// Initializes a new instance of the <see cref="InsertUpdateQuestQuery"/> class. /// </summary> /// <param name="connectionPool"><see cref="DbConnectionPool"/> to use for creating connections to /// execute the query on.</param> public InsertUpdateQuestQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { }
/// <summary> /// Initializes a new instance of the <see cref="FindForeignKeysQuery"/> class. /// </summary> /// <param name="connectionPool">DbConnectionPool to use for creating connections to execute the query on.</param> public MySqlFindForeignKeysQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { }
/// <summary> /// Initializes a new instance of the <see cref="InsertWorldStatsCountItemBuyQuery"/> class. /// </summary> /// <param name="connectionPool">The <see cref="DbConnectionPool"/> to use for creating connections to execute the query on.</param> /// <exception cref="ArgumentNullException"><paramref name="connectionPool"/> is null.</exception> public InsertWorldStatsCountItemBuyQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { QueryAsserts.ContainsColumns(WorldStatsCountItemBuyTable.DbColumns, "item_template_id", "count"); }
/// <summary> /// Initializes a new instance of the <see cref="SelectCharacterByIDQuery"/> class. /// </summary> /// <param name="connectionPool">The connection pool.</param> public SelectCharacterByIDQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { QueryAsserts.ArePrimaryKeys(CharacterTable.DbKeyColumns, "id"); }
/// <summary> /// Initializes a new instance of the <see cref="MapSpawnValuesIDCreator"/> class. /// </summary> /// <param name="connectionPool">The connection pool.</param> public MapSpawnValuesIDCreator(DbConnectionPool connectionPool) : base(connectionPool, MapSpawnTable.TableName, "id", 1) { QueryAsserts.ArePrimaryKeys(MapSpawnTable.DbKeyColumns, "id"); }
/// <summary> /// Initializes a new instance of the <see cref="UpdateCharacterQuestStatusKillsQuery"/> class. /// </summary> /// <param name="connectionPool"><see cref="DbConnectionPool"/> to use for creating connections to /// execute the query on.</param> public UpdateCharacterQuestStatusKillsQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { QueryAsserts.ContainsColumns(CharacterQuestStatusKillsTable.DbColumns, "count"); }
/// <summary> /// Gets an implementation of the <see cref="FindForeignKeysQuery"/> that works for this /// <see cref="DbControllerBase"/>. /// </summary> /// <param name="dbConnectionPool">The <see cref="DbConnectionPool"/> to use when creating the query.</param> /// <returns>The <see cref="FindForeignKeysQuery"/> to execute the query.</returns> protected override FindForeignKeysQuery GetFindForeignKeysQuery(DbConnectionPool dbConnectionPool) { return(new MySqlFindForeignKeysQuery(dbConnectionPool)); }
/// <summary> /// Initializes a new instance of the <see cref="SelectQuestRequireKillQuery"/> class. /// </summary> /// <param name="connectionPool">The connection pool.</param> public SelectQuestRequireKillQuery(DbConnectionPool connectionPool) : base(connectionPool, QuestRequireKillTable.TableName) { }
/// <summary> /// Initializes a new instance of the <see cref="SelectAccountBansQuery"/> class. /// </summary> /// <param name="connectionPool">The connection pool.</param> public SelectAccountBansQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { QueryAsserts.ContainsColumns(AccountBanTable.DbColumns, "account_id"); }
/// <summary> /// Initializes a new instance of the <see cref="InsertShopItemQuery"/> class. /// </summary> /// <param name="connectionPool">The connection pool.</param> public InsertShopItemQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { }
/// <summary> /// Initializes a new instance of the <see cref="SelectAllianceHostileQuery"/> class. /// </summary> /// <param name="connectionPool">The connection pool.</param> public SelectAllianceHostileQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { }
/// <summary> /// Initializes a new instance of the <see cref="DeleteShopQuery"/> class. /// </summary> /// <param name="connectionPool">The connection pool.</param> public DeleteShopQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { }
/// <summary> /// Initializes a new instance of the <see cref="SelectCompletedQuestsQuery"/> class. /// </summary> /// <param name="connectionPool"><see cref="DbConnectionPool"/> to use for creating connections to /// execute the query on.</param> public SelectCompletedQuestsQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { QueryAsserts.ContainsColumns(CharacterQuestStatusTable.DbColumns, "quest_id", "completed_on", "character_id"); }
override protected DbConnectionInternal CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) { SqlConnectionString opt = (SqlConnectionString)options; SqlConnectionPoolKey key = (SqlConnectionPoolKey)poolKey; SqlInternalConnection result = null; SessionData recoverySessionData = null; SqlConnection sqlOwningConnection = owningConnection as SqlConnection; bool applyTransientFaultHandling = sqlOwningConnection != null ? sqlOwningConnection._applyTransientFaultHandling : false; SqlConnectionString userOpt = null; if (userOptions != null) { userOpt = (SqlConnectionString)userOptions; } else if (sqlOwningConnection != null) { userOpt = (SqlConnectionString)(sqlOwningConnection.UserConnectionOptions); } if (sqlOwningConnection != null) { recoverySessionData = sqlOwningConnection._recoverySessionData; } if (opt.ContextConnection) { result = GetContextConnection(opt, poolGroupProviderInfo); } else { bool redirectedUserInstance = false; DbConnectionPoolIdentity identity = null; // Pass DbConnectionPoolIdentity to SqlInternalConnectionTds if using integrated security. // Used by notifications. if (opt.IntegratedSecurity || opt.UsesCertificate || opt.Authentication == SqlAuthenticationMethod.ActiveDirectoryIntegrated) { if (pool != null) { identity = pool.Identity; } else { identity = DbConnectionPoolIdentity.GetCurrent(); } } // FOLLOWING IF BLOCK IS ENTIRELY FOR SSE USER INSTANCES // If "user instance=true" is in the connection string, we're using SSE user instances if (opt.UserInstance) { // opt.DataSource is used to create the SSE connection redirectedUserInstance = true; string instanceName; if ((null == pool) || (null != pool && pool.Count <= 0)) { // Non-pooled or pooled and no connections in the pool. SqlInternalConnectionTds sseConnection = null; try { // What about a failure - throw? YES! // BUG (VSTFDevDiv) 479687: Using TransactionScope with Linq2SQL against user instances fails with "connection has been broken" message // NOTE: Cloning connection option opt to set 'UserInstance=True' and 'Enlist=False' // This first connection is established to SqlExpress to get the instance name // of the UserInstance. SqlConnectionString sseopt = new SqlConnectionString(opt, opt.DataSource, true /* user instance=true */, false /* set Enlist = false */); sseConnection = new SqlInternalConnectionTds(identity, sseopt, key.Credential, null, "", null, false, applyTransientFaultHandling: applyTransientFaultHandling); // NOTE: Retrieve <UserInstanceName> here. This user instance name will be used below to connect to the Sql Express User Instance. instanceName = sseConnection.InstanceName; if (!instanceName.StartsWith("\\\\.\\", StringComparison.Ordinal)) { throw SQL.NonLocalSSEInstance(); } if (null != pool) { // Pooled connection - cache result SqlConnectionPoolProviderInfo providerInfo = (SqlConnectionPoolProviderInfo)pool.ProviderInfo; // No lock since we are already in creation mutex providerInfo.InstanceName = instanceName; } } finally { if (null != sseConnection) { sseConnection.Dispose(); } } } else { // Cached info from pool. SqlConnectionPoolProviderInfo providerInfo = (SqlConnectionPoolProviderInfo)pool.ProviderInfo; // No lock since we are already in creation mutex instanceName = providerInfo.InstanceName; } // NOTE: Here connection option opt is cloned to set 'instanceName=<UserInstanceName>' that was // retrieved from the previous SSE connection. For this UserInstance connection 'Enlist=True'. // options immutable - stored in global hash - don't modify opt = new SqlConnectionString(opt, instanceName, false /* user instance=false */, null /* do not modify the Enlist value */); poolGroupProviderInfo = null; // null so we do not pass to constructor below... } result = new SqlInternalConnectionTds(identity, opt, key.Credential, poolGroupProviderInfo, "", null, redirectedUserInstance, userOpt, recoverySessionData, key.ServerCertificateValidationCallback, key.ClientCertificateRetrievalCallback, pool, key.AccessToken, key.OriginalNetworkAddressInfo, applyTransientFaultHandling: applyTransientFaultHandling); } return(result); }
/// <summary> /// Initializes a new instance of the <see cref="DeleteCharacterEquippedItemQuery"/> class. /// </summary> /// <param name="connectionPool">The connection pool.</param> public DeleteCharacterEquippedItemQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { QueryAsserts.ArePrimaryKeys(CharacterEquippedTable.DbKeyColumns, "character_id", "slot"); }
/// <summary> /// Gets an implementation of the <see cref="FindForeignKeysQuery"/> that works for this /// <see cref="DbControllerBase"/>. /// </summary> /// <param name="dbConnectionPool">The <see cref="DbConnectionPool"/> to use when creating the query.</param> /// <returns>The <see cref="FindForeignKeysQuery"/> to execute the query.</returns> protected override FindForeignKeysQuery GetFindForeignKeysQuery(DbConnectionPool dbConnectionPool) { return new MySqlFindForeignKeysQuery(dbConnectionPool); }
/// <summary> /// Initializes a new instance of the <see cref="DbQueryReader"/> class. /// </summary> /// <param name="connectionPool">DbConnectionPool to use for creating connections to execute the query on.</param> public SelectQuestIDsQuery(DbConnectionPool connectionPool) : base(connectionPool, CreateQuery(connectionPool.QueryBuilder)) { QueryAsserts.ArePrimaryKeys(QuestTable.DbKeyColumns, "id"); }