예제 #1
0
            public ITransaction BeginTransaction()
            {
                EnsureOpen();

                _connection.BeginTransaction();

                return(new NullTransaction());
            }
예제 #2
0
        public static NonQueryResult ExecuteNonQuery(IDataConnection connection, IDataCommandTemplate commandTemplate, DataParameterValue parameterValue, bool collectPrimaryKey)
        {
            if (connection.State == ConnectionState.Closed)
            {
                connection.Open();
            }

            using (IDataCommand command = connection.CreateCommand(commandTemplate, parameterValue))
            {
                using (IDbTransaction transaction = connection.BeginTransaction())
                {
                    command.Transaction = transaction;

                    int rowsAffected = command.ExecuteNonQuery();

                    if (rowsAffected != 1)
                    {
                        throw new DataException("Number of rows affected = " + rowsAffected + " expected 1");
                    }

                    object primaryKey;

                    if (collectPrimaryKey)
                    {
                        DataCommandTemplate identity = new DataCommandTemplate(CommandType.Text, "SELECT @@IDENTITY Id");

                        using (IDbCommand primaryKeyCommand = connection.CreateCommand(identity, parameterValue))
                        {
                            primaryKeyCommand.Transaction = transaction;

                            primaryKey = primaryKeyCommand.ExecuteScalar();
                        }
                    }
                    else
                    {
                        primaryKey = null;
                    }

                    transaction.Commit();

                    return(new NonQueryResult(primaryKey, rowsAffected));
                }
            }
        }
예제 #3
0
            public ITransaction BeginTransaction()
            {
                EnsureOpen();

                if (_session == null)
                {
                    _session = _repository.CreateSession();

                    IDataConnection connection = _session.OpenConnection();

                    ITransaction transaction = connection.BeginTransaction();

                    _repository.OnBeginTransaction(_session);

                    return(transaction);
                }

                return(new NullTransaction());
            }
예제 #4
0
        protected T DoInTransaction <T>(Block <T> block)
        {
            IDataSessionManager sessionManager = Resolve <IDataSessionManager>();

            using (IDataSession session = sessionManager.CreateSession(DatabaseName))
            {
                using (IDataConnection connection = session.OpenConnection())
                {
                    using (ITransaction transaction = connection.BeginTransaction())
                    {
                        OnBeginTransaction(session);

                        T value = block();

                        transaction.Commit();

                        return(value);
                    }
                }
            }
        }
예제 #5
0
 public Task <IDataConnectionTransaction> BeginTransaction(IsolationLevel isolationLevel)
 {
     return(_connection.BeginTransaction(isolationLevel));
 }