/// <summary> /// Создает текущую транзакцию и добавляет ее в стэк отдельно запущенных транзакций. /// </summary> /// <param name="context"></param> /// <returns></returns> internal static DBTransaction CreateCurrent(DBConnectionContext context) { if (context == null) { throw new ArgumentNullException("context"); } //получаем стэк транзакций. Stack <DBTransaction> transactionsStack = DBTransaction.TransactionsStack; //создаем транзакцию. DBTransaction transaction = new DBTransaction(context); //убираем признак текущей транзакции с последней текущей транзакции, расположенной в стэке. if (transactionsStack.Count > 0) { DBTransaction currentTransaction = DBTransaction.EnsureCurrent(transactionsStack.Peek()); currentTransaction.SetIsCurrent(false); } //добавляем транзакцию в стэк и назначаем текущую транзакцию. transactionsStack.Push(transaction); //возвращаем созданную новую текущую транзакцию. return(transaction); }
/// <summary> /// Создает экземпляр транзакции. /// </summary> internal DBTransaction(DBConnectionContext context) { if (context == null) { throw new ArgumentNullException("context"); } this.Context = context; //при создании транзакции, помечаем её как текущую. this.SetIsCurrent(true); }
/// <summary> /// Создает экземпляр DBTransactionScope. /// </summary> internal DBTransactionScope(bool createNew, DBConnectionContext context) { if (context == null) { throw new ArgumentNullException("context"); } //создаём текущую транзакцию при необходимости. if (!DBTransaction.HasCurrent || createNew) { this.OwnedTransaction = DBTransaction.CreateCurrent(context); } this.Context = context; }
/// <summary> /// К-тор. /// </summary> /// <param name="databaseServerName">Название экземпляра сервера базы данных.</param> /// <param name="databaseName">Название базы данных.</param> /// <param name="context">Контекст подключений к базам данных.</param> internal DBConnection(string databaseServerName, string databaseName, DBConnectionContext context) { if (string.IsNullOrEmpty(databaseServerName)) { throw new ArgumentNullException("databaseServerName"); } if (string.IsNullOrEmpty(databaseName)) { throw new ArgumentNullException("databaseName"); } this.DatabaseServerName = databaseServerName; this.DatabaseName = databaseName; this.Context = context; }