public Validation CreateExpense(ref Expense expense)
        {
            Validation val = Validate(expense);

            IAuctionTransaction trans = _factory.BuildTransaction("InsertExpense");
            try
            {
                //validate
                if (val.IsValid)
                {
                    _repo.InsertExpense(ref expense, ref trans);
                }
                trans.Commit();
            }
            catch (Exception e)
            {
                trans.Rollback();
                val.AddError(string.Format("Unable to create expense: {0}", e.Message));
            }
            finally
            {
                trans.Dispose();
            }
            return val;
        }
        private static Validation Validate(Expense expense)
        {
            var val = new Validation();
            if (string.IsNullOrEmpty(expense.Name))
            {
                val.AddError("Name is required");
            }

            if (expense.EventId < 0)
            {
                val.AddError("Event is required");
            }
            return val;
        }