示例#1
0
        public static IDatabaseCommand CreateCommand(this IDatabase database, IDatabaseQuery query, DatabaseCommandFlags flags, ITransactionSource transaction = null)
        {
            var factory = new Func <IDatabaseCommand>(() =>
            {
                var command         = database.Connection.CreateCommand();
                command.CommandText = query.CommandText;
                var parameters      = database.CreateParameters(command, query);
                if (transaction != null)
                {
                    transaction.Bind(command);
                }
                return(new DatabaseCommand(command, parameters, flags));
            });

            if (transaction != null && !flags.HasFlag(DatabaseCommandFlags.NoCache))
            {
                var command = transaction.CommandCache.GetOrAdd(query, factory);
                command.Parameters.Reset();
                return(command);
            }
            return(factory());
        }
示例#2
0
 public DatabaseCommand(IDbCommand command, IDatabaseParameters parameters, DatabaseCommandFlags flags)
 {
     this.Command    = command;
     this.Parameters = parameters;
     this.Flags      = flags;
 }