Пример #1
0
        public static IDatabaseQuerySource Source <T>(this IDatabase database, DatabaseParameterHandler parameters, ITransactionSource transaction = null)
        {
#pragma warning disable 612, 618
            return(database.Source(database.Config.Table <T>(), parameters, transaction));

#pragma warning restore 612, 618
        }
Пример #2
0
 public int Execute(IDatabaseQuery query, DatabaseParameterHandler parameters, ITransactionSource transaction = null)
 {
     if (string.IsNullOrEmpty(query.CommandText))
     {
         throw new InvalidOperationException("The query is empty.");
     }
     return(this.CreateCommand(
                query,
                DatabaseCommandFlags.None,
                transaction
                ).Using(
                command =>
     {
         if (parameters != null)
         {
             parameters(command.Parameters, DatabaseParameterPhase.Fetch);
         }
         var result = command.ExecuteNonQuery();
         if (parameters != null)
         {
             parameters(command.Parameters, DatabaseParameterPhase.Store);
         }
         return result;
     },
                () => transaction == null
                ));
 }
Пример #3
0
        public EntityAction Update(object persisted, object updated, DatabaseParameterHandler parameters = null)
        {
            this.OnUpdating(updated);
            var update = default(IDatabaseQuery);

            if (!this.GetUpdateQuery(persisted, updated, out update))
            {
                return(EntityAction.None);
            }
            if (parameters == null)
            {
                parameters = new ParameterHandlerStrategy(this.Table, updated).Handler;
            }
            var count = this.Database.Execute(update, parameters, this.Transaction);

            if (count != 1)
            {
                this.OnConcurrencyViolation(updated);
            }
            else
            {
                this.OnUpdated(updated);
            }
            return(EntityAction.Updated);
        }
Пример #4
0
        public EntityAction Update(object persisted, object updated, DatabaseParameterHandler parameters = null)
        {
            var graph = this.GetEntityGraph((persisted ?? updated).GetType());

            this.Visitor.Visit(graph, persisted, updated);
            return(EntityAction.Updated);
        }
Пример #5
0
        public EntityAction Delete(object item, DatabaseParameterHandler parameters = null)
        {
            var graph = this.GetEntityGraph(item.GetType());

            this.Visitor.Visit(graph, item, null);
            return(EntityAction.Deleted);
        }
Пример #6
0
        public EntityAction Add(object item, DatabaseParameterHandler parameters = null)
        {
            this.OnAdding(item);
            var add = this.Database.QueryCache.Add(this.Table);

            if (parameters == null)
            {
                parameters = new ParameterHandlerStrategy(this.Table, item).Handler;
            }
            var key = this.Database.ExecuteScalar <object>(add, parameters, this.Transaction);

            this.OnAdded(key, item);
            return(EntityAction.Added);
        }
Пример #7
0
        public IDatabaseReader ExecuteReader(IDatabaseQuery query, DatabaseParameterHandler parameters, ITransactionSource transaction = null)
        {
            var command = this.CreateCommand(query, DatabaseCommandFlags.None, transaction);

            if (parameters != null)
            {
                parameters(command.Parameters, DatabaseParameterPhase.Fetch);
            }
            var result = new DatabaseReader(command.Command, transaction == null);

            if (parameters != null)
            {
                parameters(command.Parameters, DatabaseParameterPhase.Store);
            }
            return(result);
        }
Пример #8
0
        public EntityAction Delete(object item, DatabaseParameterHandler parameters = null)
        {
            var delete = this.Database.QueryCache.Delete(this.Table);

            if (parameters == null)
            {
                parameters = new ParameterHandlerStrategy(this.Table, item).Handler;
            }
            var count = this.Database.Execute(delete, parameters, this.Transaction);

            if (count != 1)
            {
                this.OnConcurrencyViolation(item);
            }
            else
            {
                this.OnDeleted(item);
            }
            return(EntityAction.Deleted);
        }
Пример #9
0
 public T ExecuteScalar <T>(IDatabaseQuery query, DatabaseParameterHandler parameters, ITransactionSource transaction = null)
 {
     return(this.CreateCommand(
                query,
                DatabaseCommandFlags.None,
                transaction
                ).Using(
                command =>
     {
         if (parameters != null)
         {
             parameters(command.Parameters, DatabaseParameterPhase.Fetch);
         }
         var result = Converter.ChangeType <T>(command.ExecuteScalar());
         if (parameters != null)
         {
             parameters(command.Parameters, DatabaseParameterPhase.Store);
         }
         return result;
     },
                () => transaction == null
                ));
 }
Пример #10
0
 public DatabaseQuerySource(IDatabase database, IDatabaseQueryComposer composer, DatabaseParameterHandler parameters, ITransactionSource transaction = null)
 {
     this.Database           = database;
     this.Composer           = composer;
     this.OriginalParameters = parameters;
     this.Transaction        = transaction;
     this.Reset();
 }
Пример #11
0
 public DatabaseQuerySource(IDatabase database, IDatabaseQueryComposer composer, DatabaseParameterHandler parameters, IQueryGraphBuilder fetch, IQueryGraphBuilder add, IQueryGraphBuilder update, IQueryGraphBuilder delete, ITransactionSource transaction = null) : this(database, composer, parameters, transaction)
 {
     this.Fetch  = fetch;
     this.Add    = add;
     this.Update = update;
     this.Delete = delete;
 }
Пример #12
0
 public IDatabaseQuerySource Source(IDatabaseQueryComposer composer, DatabaseParameterHandler parameters, ITransactionSource transaction = null)
 {
     return(new DatabaseQuerySource(this, composer, parameters, transaction));
 }
Пример #13
0
 public static IDatabaseSet <T> Set <T>(this IDatabase database, ITableConfig table, DatabaseParameterHandler parameters, ITransactionSource transaction = null)
 {
     return(database.Set <T>(database.Source(table, parameters, transaction)));
 }
Пример #14
0
 public static IAsyncEnumerator <T> ExecuteAsyncEnumerator <T>(this IDatabase database, ITableConfig table, IQueryGraphBuilder query, DatabaseParameterHandler parameters, ITransactionSource transaction = null)
 {
     return(database.ExecuteAsyncEnumerator <T>(table, query.Build(), parameters, transaction));
 }
Пример #15
0
 public static IAsyncEnumerator <T> ExecuteAsyncEnumerator <T>(this IDatabase database, IDatabaseQuery query, DatabaseParameterHandler parameters, ITransactionSource transaction = null)
 {
     return(database.ExecuteAsyncEnumerator <T>(database.Config.Table <T>(), query, parameters, transaction));
 }
Пример #16
0
 public static IDatabaseQuerySource Source(this IDatabase database, ITableConfig table, DatabaseParameterHandler parameters, ITransactionSource transaction = null)
 {
     return(database.Source(new EntityRelationQueryComposer(database, table), parameters, transaction));
 }
Пример #17
0
 public static IDatabaseQuerySource Source(this IDatabase database, IDatabaseQueryComposer composer, DatabaseParameterHandler parameters, ITransactionSource transaction = null)
 {
     return(database.Source(composer, parameters, transaction));
 }
Пример #18
0
 public IEnumerable <T> ExecuteEnumerator <T>(ITableConfig table, IDatabaseQuery query, DatabaseParameterHandler parameters, ITransactionSource transaction = null)
 {
     using (var reader = this.ExecuteReader(query, parameters, transaction))
     {
         var mapper     = new EntityMapper(table);
         var visitor    = new EntityCompoundEnumeratorVisitor();
         var enumerable = new EntityCompoundEnumerator(this, table, mapper, visitor);
         var buffer     = new EntityEnumeratorBuffer(this);
         var sink       = new EntityEnumeratorSink(table);
         foreach (var element in enumerable.AsEnumerable <T>(buffer, sink, reader))
         {
             yield return(element);
         }
     }
 }
Пример #19
0
 public static Task <int> ExecuteAsync(this IDatabase database, IQueryGraphBuilder query, DatabaseParameterHandler parameters, ITransactionSource transaction = null)
 {
     return(database.ExecuteAsync(query.Build(), parameters, transaction));
 }
Пример #20
0
        public IAsyncEnumerator <T> ExecuteAsyncEnumerator <T>(ITableConfig table, IDatabaseQuery query, DatabaseParameterHandler parameters, ITransactionSource transaction = null)
        {
            var reader     = this.ExecuteReader(query, parameters, transaction);
            var mapper     = new EntityMapper(table);
            var visitor    = new EntityCompoundEnumeratorVisitor();
            var enumerable = new EntityCompoundEnumerator(this, table, mapper, visitor);
            var buffer     = new EntityEnumeratorBuffer(this);
            var sink       = new EntityEnumeratorSink(table);

            return(enumerable.AsEnumerableAsync <T>(buffer, sink, reader, true));
        }