示例#1
0
 private SimpleTransaction(SimpleTransaction copy) : base(copy)
 {
     _adapter = copy._adapter;
     _database = copy._database;
     _adapterTransaction = copy._adapterTransaction;
     _transactionRunner = copy._transactionRunner;
 }
示例#2
0
        private ODataClient GetODataClient(IAdapterTransaction transaction = null)
        {
            ODataClient client;
            var         adapterTransaction = transaction as ODataAdapterTransaction;

            if (adapterTransaction != null)
            {
                client = new ODataClient(adapterTransaction.Batch);
            }
            else
            {
                client = new ODataClient(_urlBase);
            }

            var adapterPluralizer = Database.GetPluralizer();

            if (adapterPluralizer != null)
            {
                var clientPluralizer = new Pluralizer(adapterPluralizer.IsPlural, adapterPluralizer.IsSingular,
                                                      adapterPluralizer.Pluralize, adapterPluralizer.Singularize);
                ODataClient.SetPluralizer(clientPluralizer);
            }

            return(client);
        }
 public int UpdateMany(string tableName, IEnumerable<IDictionary<string, object>> data,
                       IAdapterTransaction transaction, IList<string> keyFields)
 {
     IBulkUpdater bulkUpdater = ProviderHelper.GetCustomProvider<IBulkUpdater>(ConnectionProvider) ??
                                new BulkUpdater();
     return bulkUpdater.Update(this, tableName, data.ToList(), ((AdoAdapterTransaction)transaction).DbTransaction);
 }
示例#4
0
 private static int Execute(ICommandBuilder commandBuilder, IAdapterTransaction transaction)
 {
     using (var command = commandBuilder.GetCommand(((AdoAdapterTransaction)transaction).Transaction.Connection))
     {
         return(TryExecute(command));
     }
 }
示例#5
0
        public int Update(string tableName, IDictionary <string, object> data, SimpleExpression criteria,
                          IAdapterTransaction transaction)
        {
            ICommandBuilder commandBuilder = new UpdateHelper(_schema).GetUpdateCommand(tableName, data, criteria);

            return(Execute(commandBuilder, transaction));
        }
        private int DeleteByExpression(string tableName,
                                       SimpleExpression criteria, IAdapterTransaction transaction)
        {
            tableName = EvaluateConcreteTableName(tableName, null, criteria);
            var tablePath         = GetTablePath(tableName);
            var concreteTableName = tablePath.Split('/').Last();

            var cmd           = GetCommandBuilder().BuildCommand(concreteTableName, criteria);
            var clientCommand = GetODataClientCommand(cmd);
            var client        = GetODataClient(transaction);

            int result;

            if (clientCommand.FilterIsKey)
            {
                Utils.ExecuteAndUnwrap(() =>
                                       client.DeleteEntryAsync(tablePath, clientCommand.FilterAsKey));
                result = 1;
            }
            else
            {
                result = Utils.ExecuteAndUnwrap(() =>
                                                client.DeleteEntriesAsync(tablePath, Utils.ExecuteAndUnwrap(clientCommand.GetCommandTextAsync)));
            }
            return(result);
        }
示例#7
0
 private SimpleTransaction(SimpleTransaction copy) : base(copy)
 {
     _adapter            = copy._adapter;
     _database           = copy._database;
     _adapterTransaction = copy._adapterTransaction;
     _transactionRunner  = copy._transactionRunner;
 }
 public IEnumerable<IDictionary<string, object>> InsertMany(string tableName,
                                                            IEnumerable<IDictionary<string, object>> data,
                                                            IAdapterTransaction transaction,
                                                            Func<IDictionary<string, object>, Exception, bool> onError, bool resultRequired)
 {
     return new AdoAdapterInserter(this, ((AdoAdapterTransaction)transaction).DbTransaction).InsertMany(
         tableName, data, onError, resultRequired);
 }
 public int UpdateMany(string tableName, IList<IDictionary<string, object>> dataList,
                       IEnumerable<string> criteriaFieldNames, IAdapterTransaction adapterTransaction)
 {
     IBulkUpdater bulkUpdater = ProviderHelper.GetCustomProvider<IBulkUpdater>(ConnectionProvider) ??
                                new BulkUpdater();
     return bulkUpdater.Update(this, tableName, dataList, criteriaFieldNames,
                               ((AdoAdapterTransaction)adapterTransaction).DbTransaction);
 }
示例#10
0
        public int UpdateMany(string tableName, IEnumerable <IDictionary <string, object> > data,
                              IAdapterTransaction transaction, IList <string> keyFields)
        {
            IBulkUpdater bulkUpdater = ProviderHelper.GetCustomProvider <IBulkUpdater>(ConnectionProvider) ??
                                       new BulkUpdater();

            return(bulkUpdater.Update(this, tableName, data.ToList(), ((AdoAdapterTransaction)transaction).DbTransaction));
        }
示例#11
0
 public IEnumerable <IDictionary <string, object> > InsertMany(string tableName,
                                                               IEnumerable <IDictionary <string, object> > data,
                                                               IAdapterTransaction transaction,
                                                               Func <IDictionary <string, object>, Exception, bool> onError, bool resultRequired)
 {
     return(new AdoAdapterInserter(this, ((AdoAdapterTransaction)transaction).DbTransaction).InsertMany(
                tableName, data, onError, resultRequired));
 }
 private IEnumerable<IEnumerable<IEnumerable<KeyValuePair<string, object>>>> ExecuteFunction(string functionName,
     IDictionary<string, object> parameters, IAdapterTransaction transaction)
 {
     return new[]
            {
                Utils.ExecuteAndUnwrap(() => 
                    GetODataClient(transaction).ExecuteFunctionAsync(functionName, parameters))
            };
 }
示例#13
0
        public int UpdateMany(string tableName, IList <IDictionary <string, object> > dataList,
                              IEnumerable <string> criteriaFieldNames, IAdapterTransaction adapterTransaction)
        {
            IBulkUpdater bulkUpdater = ProviderHelper.GetCustomProvider <IBulkUpdater>(ConnectionProvider) ??
                                       new BulkUpdater();

            return(bulkUpdater.Update(this, tableName, dataList, criteriaFieldNames,
                                      ((AdoAdapterTransaction)adapterTransaction).DbTransaction));
        }
示例#14
0
 public int Update(string tableName, IDictionary <string, object> data, IAdapterTransaction adapterTransaction)
 {
     string[] keyFieldNames = GetKeyNames(tableName).ToArray();
     if (keyFieldNames.Length == 0)
     {
         throw new AdoAdapterException("No Primary Key found for implicit update");
     }
     return(Update(tableName, data, GetCriteria(tableName, keyFieldNames, data), adapterTransaction));
 }
示例#15
0
        private static int Execute(ICommandBuilder commandBuilder, IAdapterTransaction transaction)
        {
            IDbTransaction dbTransaction = ((AdoAdapterTransaction)transaction).Transaction;

            using (IDbCommand command = commandBuilder.GetCommand(dbTransaction.Connection))
            {
                command.Transaction = dbTransaction;
                return(TryExecute(command));
            }
        }
示例#16
0
        private int DeleteByExpression(string tableName, SimpleExpression criteria, IAdapterTransaction transaction)
        {
            var entries = FindByExpression(tableName, criteria);

            foreach (var entry in entries)
            {
                GetODataClient(transaction).DeleteEntry(tableName, entry);
            }
            // TODO: what to return?
            return(0);
        }
示例#17
0
 internal int Execute(ICommandBuilder commandBuilder, IAdapterTransaction transaction)
 {
     IDbTransaction dbTransaction = ((AdoAdapterTransaction) transaction).DbTransaction;
     return Execute(commandBuilder, dbTransaction);
 }
 public int UpdateMany(string tableName, IEnumerable <IDictionary <string, object> > dataList, IAdapterTransaction transaction)
 {
     return(this.UpdateMany(tableName, dataList));
 }
 public int Update(string tableName, IDictionary <string, object> data, SimpleExpression criteria, IAdapterTransaction transaction)
 {
     return(UpdateByExpression(tableName, data, criteria, transaction));
 }
 public IEnumerable <IDictionary <string, object> > RunQuery(SimpleQuery query, IAdapterTransaction transaction, out IEnumerable <SimpleQueryClauseBase> unhandledClauses)
 {
     return(this.RunQuery(query, out unhandledClauses));
 }
示例#21
0
 public IDictionary<string, object> Insert(string tableName, IDictionary<string, object> data, IAdapterTransaction transaction)
 {
     return new AdoAdapterInserter(this, ((AdoAdapterTransaction)transaction).Transaction).Insert(tableName, data);
 }
示例#22
0
 public int Update(string tableName, IDictionary <string, object> data, SimpleExpression criteria, IAdapterTransaction transaction)
 {
     throw new NotImplementedException();
 }
 public override IEnumerable<IDictionary<string, object>> UpsertMany(string tableName, IList<IDictionary<string, object>> list, IEnumerable<string> keyFieldNames, IAdapterTransaction adapterTransaction, bool isResultRequired, Func<IDictionary<string, object>, Exception, bool> errorCallback)
 {
     var transaction = ((AdoAdapterTransaction) adapterTransaction).DbTransaction;
     return new AdoAdapterUpserter(this, transaction).UpsertMany(tableName, list, keyFieldNames.ToArray(), isResultRequired, errorCallback);
 }
示例#24
0
 public IDictionary <string, object> Insert(string tableName, IDictionary <string, object> data, IAdapterTransaction transaction, bool resultRequired)
 {
     throw new NotImplementedException();
 }
示例#25
0
 public IEnumerable <IDictionary <string, object> > InsertMany(string tableName, IEnumerable <IDictionary <string, object> > data, IAdapterTransaction transaction, Func <IDictionary <string, object>, Exception, bool> onError, bool resultRequired)
 {
     throw new NotImplementedException();
 }
示例#26
0
 public IEnumerable <IDictionary <string, object> > Find(string tableName, SimpleExpression criteria, IAdapterTransaction transaction)
 {
     throw new NotImplementedException();
 }
示例#27
0
 public IEnumerable <IDictionary <string, object> > RunQuery(SimpleQuery query, IAdapterTransaction transaction, out IEnumerable <SimpleQueryClauseBase> unhandledClauses)
 {
     throw new NotImplementedException();
 }
示例#28
0
 public IDictionary <string, object> Get(string tableName, IAdapterTransaction transaction, params object[] parameterValues)
 {
     throw new NotImplementedException();
 }
 public IDictionary<string, object> Insert(string tableName, IDictionary<string, object> data,
                                           IAdapterTransaction transaction, bool resultRequired)
 {
     return new AdoAdapterInserter(this, ((AdoAdapterTransaction)transaction).DbTransaction).Insert(tableName,
                                                                                                   data, resultRequired);
 }
示例#30
0
 public int Delete(string tableName, SimpleExpression criteria, IAdapterTransaction transaction)
 {
     throw new NotImplementedException();
 }
 public int Delete(string tableName, SimpleExpression criteria, IAdapterTransaction transaction)
 {
     ICommandBuilder commandBuilder = new DeleteHelper(_schema).GetDeleteCommand(tableName, criteria);
     return Execute(commandBuilder, transaction);
 }
示例#32
0
 public int UpdateMany(string tableName, IList <IDictionary <string, object> > dataList, IEnumerable <string> criteriaFieldNames, IAdapterTransaction adapterTransaction)
 {
     throw new NotImplementedException();
 }
示例#33
0
 private void Begin(string name)
 {
     _adapterTransaction = _adapter.BeginTransaction(name);
 }
 public IEnumerable<IDictionary<string, object>> Find(string tableName, SimpleExpression criteria, IAdapterTransaction transaction)
 {
     return Find(tableName, criteria);
 }
 public IEnumerable<IDictionary<string, object>> RunQuery(SimpleQuery query, IAdapterTransaction transaction, out IEnumerable<SimpleQueryClauseBase> unhandledClauses)
 {
     return new AdoAdapterQueryRunner(this, (AdoAdapterTransaction)transaction).RunQuery(query, out unhandledClauses);
 }
 public IDictionary<string, object> Insert(string tableName, IDictionary<string, object> data, IAdapterTransaction transaction, bool resultRequired)
 {
     return Insert(tableName, data, resultRequired);
 }
 public IDictionary <string, object> Get(string tableName, IAdapterTransaction transaction, params object[] parameterValues)
 {
     return(this.Get(tableName, parameterValues));
 }
 public int Update(string tableName, IDictionary<string, object> data, SimpleExpression criteria, IAdapterTransaction transaction)
 {
     return Update(tableName, data, criteria);
 }
 public IDictionary <string, object> Insert(string tableName, IDictionary <string, object> data, IAdapterTransaction transaction, bool resultRequired)
 {
     CheckInsertablePropertiesAreAvailable(tableName, data);
     return(GetODataClient(transaction).InsertEntry(tableName, data, resultRequired));
 }
 public int Delete(string tableName, SimpleExpression criteria, IAdapterTransaction transaction)
 {
     return Delete(tableName, criteria);
 }
 public int UpdateMany(string tableName, IList <IDictionary <string, object> > dataList, IEnumerable <string> criteriaFieldNames, IAdapterTransaction transaction)
 {
     return(this.UpdateMany(tableName, dataList, criteriaFieldNames));
 }
示例#42
0
 private void Begin()
 {
     _adapterTransaction = _adapter.BeginTransaction(_isolationLevel);
     _transactionRunner  = new TransactionRunner(_adapter, _adapterTransaction);
 }
 public int Delete(string tableName, SimpleExpression criteria, IAdapterTransaction transaction)
 {
     return(DeleteByExpression(tableName, criteria, transaction));
 }
示例#44
0
 public int Update(string tableName, IDictionary<string, object> data, IAdapterTransaction adapterTransaction)
 {
     var keyFieldNames = GetKeyFieldNames(tableName).ToArray();
     if (keyFieldNames.Length == 0) throw new AdoAdapterException("No Primary Key found for implicit update");
     return Update(tableName, data, GetCriteria(tableName, keyFieldNames, data), adapterTransaction);
 }
 public IEnumerable<IDictionary<string, object>> Find(string tableName, SimpleExpression criteria,
                                                      IAdapterTransaction transaction)
 {
     return new AdoAdapterFinder(this, ((AdoAdapterTransaction)transaction).DbTransaction).Find(tableName,
                                                                                               criteria);
 }
 public int UpdateMany(string tableName, IList<IDictionary<string, object>> dataList, IEnumerable<string> criteriaFieldNames, IAdapterTransaction adapterTransaction)
 {
     return UpdateMany(tableName, dataList, criteriaFieldNames);
 }
 public int Update(string tableName, IDictionary<string, object> data, SimpleExpression criteria,
                   IAdapterTransaction transaction)
 {
     ICommandBuilder commandBuilder = new UpdateHelper(_schema).GetUpdateCommand(tableName, data, criteria);
     return Execute(commandBuilder, transaction);
 }
        public IEnumerable <ResultSet> Execute(string functionName, IDictionary <string, object> parameters, IAdapterTransaction transaction)
        {
            var executor = _executors.GetOrAdd(functionName, f => _connectionProvider.GetProcedureExecutor(this, _schema.BuildObjectName(f)));

            return(executor.Execute(parameters, ((AdoAdapterTransaction)transaction).DbTransaction));
        }
 public override IDictionary<string, object> Upsert(string tableName, IDictionary<string, object> data, SimpleExpression criteria, bool resultRequired, IAdapterTransaction adapterTransaction)
 {
     var transaction = ((AdoAdapterTransaction) adapterTransaction).DbTransaction;
     return new AdoAdapterUpserter(this, transaction).Upsert(tableName, data, criteria, resultRequired);
 }
示例#50
0
 public IEnumerable<IDictionary<string, object>> InsertMany(string tableName, IEnumerable<IDictionary<string, object>> data, IAdapterTransaction transaction)
 {
     return new AdoAdapterInserter(this, ((AdoAdapterTransaction)transaction).Transaction).InsertMany(tableName, data);
 }
 public IEnumerable<IEnumerable<IEnumerable<KeyValuePair<string, object>>>> Execute(string functionName,
     IDictionary<string, object> parameters, IAdapterTransaction transaction)
 {
     return ExecuteFunction(functionName, parameters, transaction);
 }
示例#52
0
 private void Begin()
 {
     _adapterTransaction = _adapter.BeginTransaction(_isolationLevel);
     _transactionRunner = new TransactionRunner(_adapter, _adapterTransaction);
 }
 public int Update(string tableName, IDictionary<string, object> data, IAdapterTransaction adapterTransaction)
 {
     string[] keyFieldNames = GetKeyNames(tableName).ToArray();
     if (keyFieldNames.Length == 0) throw new AdoAdapterException(string.Format("No primary key found for implicit update of table '{0}'.", tableName));
     return Update(tableName, data, GetCriteria(tableName, keyFieldNames, data), adapterTransaction);
 }
示例#54
0
 private void Begin(string name)
 {
     _adapterTransaction = _adapter.BeginTransaction(name, _isolationLevel);
     _transactionRunner = new TransactionRunner(_adapter, _adapterTransaction);
 }
        //public IAdapterTransaction BeginTransaction()
        //{
        //    IDbConnection connection = CreateConnection();
        //    connection.OpenIfClosed();
        //    IDbTransaction transaction = connection.BeginTransaction();
        //    return new AdoAdapterTransaction(transaction, _sharedConnection != null);
        //}

        //public IAdapterTransaction BeginTransaction(string name)
        //{
        //    IDbConnection connection = CreateConnection();
        //    connection.OpenIfClosed();
        //    var sqlConnection = connection as SqlConnection;
        //    IDbTransaction transaction = sqlConnection != null
        //                                     ? sqlConnection.BeginTransaction(name)
        //                                     : connection.BeginTransaction();

        //    return new AdoAdapterTransaction(transaction, name, _sharedConnection != null);
        //}

        public IDictionary<string,object> Get(string tableName, IAdapterTransaction transaction, params object[] parameterValues)
        {
            return new AdoAdapterGetter(this, ((AdoAdapterTransaction) transaction).DbTransaction).Get(tableName,
                                                                                                     parameterValues);
        }
 public IEnumerable <IDictionary <string, object> > Find(string tableName, SimpleExpression criteria, IAdapterTransaction transaction)
 {
     return(this.Find(tableName, criteria));
 }
 public int UpdateMany(string tableName, IEnumerable<IDictionary<string, object>> dataList, IAdapterTransaction adapterTransaction, IList<string> keyFields)
 {
     return UpdateMany(tableName, dataList, keyFields);
 }
示例#58
0
 private static int Execute(ICommandBuilder commandBuilder, IAdapterTransaction transaction)
 {
     var dbTransaction = ((AdoAdapterTransaction) transaction).Transaction;
     using (var command = commandBuilder.GetCommand(dbTransaction.Connection))
     {
         command.Transaction = dbTransaction;
         return TryExecute(command);
     }
 }
示例#59
0
 private void Begin(string name)
 {
     _adapterTransaction = _adapter.BeginTransaction(name, _isolationLevel);
     _transactionRunner  = new TransactionRunner(_adapter, _adapterTransaction);
 }
 public int Update(string tableName, IDictionary<string, object> data, IAdapterTransaction adapterTransaction)
 {
     return Update(tableName, data);
 }