public void Add(BusTask task)
        {
            Open();

            var command = Connection.CreateCommand();
            command.CommandText = "INSERT INTO BusTask (MessageType, Data, Queue, Received, Finished, Error, State) VALUES (@messageType,@data,@queue,@received,@finished,@error,@state); SELECT @@IDENTITY";
            command.Parameters.Add(CreateParameter(DbType.String, task.MessageType, "messageType"));
            command.Parameters.Add(CreateParameter(DbType.String, task.Data, "data"));
            command.Parameters.Add(CreateParameter(DbType.String, task.Queue, "queue"));
            command.Parameters.Add(CreateParameter(DbType.DateTime, task.Received, "received"));
            command.Parameters.Add(CreateParameter(DbType.DateTime, task.Finished, "finished"));
            command.Parameters.Add(CreateParameter(DbType.String, string.IsNullOrEmpty(task.Error) ? string.Empty : task.Error, "error"));
            command.Parameters.Add(CreateParameter(DbType.Int32, task.State, "state"));

            var returnedIdentity = command.ExecuteScalar();
            Int64 parsedIdentity;

            if (long.TryParse(returnedIdentity.ToString(), out parsedIdentity))
                task.Id = parsedIdentity;

            Close();
        }
        public IEnumerable<BusTask> GetAllOpenTasks()
        {
            Open();

            var command = Connection.CreateCommand();
            command.CommandText = "SELECT MessageType, Data, Queue, Received, Finished, Error, State, Id FROM BusTask where State <> 2 order by Received ASC";

            using (var reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    BusTask task = new BusTask(reader.GetString(2), reader.GetString(0), reader.GetString(1));
                    task.Received = reader.GetDateTime(3);
                    task.Finished = reader.GetDateTime(4);
                    task.Error = reader.GetString(5);
                    task.State = (BusTaskState)reader.GetInt32(6);
                    task.Id = reader.GetInt64(7);

                    yield return task;
                }
            }

            Close();
        }
 public void Update(BusTask task)
 {
     var repository = Activator.CreateInstance(RepositoryType) as IRepository;
     repository.Update(task);
 }
        public void Update(BusTask task)
        {
            Open();

            var command = Connection.CreateCommand();
            command.CommandText = "UPDATE BusTask SET MessageType=@messageType, Data=@data, Queue=@queue, Received=@received, Finished=@finished, Error=@error, State=@state where Id=@id";
            command.Parameters.Add(CreateParameter(DbType.String, task.MessageType, "messageType"));
            command.Parameters.Add(CreateParameter(DbType.String, task.Data, "data"));
            command.Parameters.Add(CreateParameter(DbType.String, task.Queue, "queue"));
            command.Parameters.Add(CreateParameter(DbType.DateTime, task.Received, "received"));
            command.Parameters.Add(CreateParameter(DbType.DateTime, task.Finished, "finished"));
            command.Parameters.Add(CreateParameter(DbType.String, string.IsNullOrEmpty(task.Error) ? string.Empty : task.Error, "error"));
            command.Parameters.Add(CreateParameter(DbType.Int32, task.State, "state"));
            command.Parameters.Add(CreateParameter(DbType.Int64, task.Id, "id"));

            command.ExecuteNonQuery();

            Close();
        }