public int CreateHero(Hero hero, IEnumerable<IPostedFile> photos)
 {
     var heroId = 0;
     using (var tran = new DbTransactionManager())
     {
         tran.BeginTransaction();
         using (var db = new DataAccess(tran))
         {
             db.CreateStoredProcCommand("dbo.CreateHero");
             db.AddInputParameter("@FirstName", DbType.String, hero.FirstName);
             db.AddInputParameter("@LastName", DbType.String, hero.LastName);
             db.AddInputParameter("@MiddleName", DbType.String, hero.MiddleName);
             db.AddInputParameter("@Dob", DbType.DateTime, hero.Dob);
             db.AddInputParameter("@Died", DbType.DateTime, hero.Died);
             db.AddInputParameter("@MilitaryGroupId", DbType.Int32, hero.MilitaryGroupId);
             db.AddInputParameter("@MilitaryRankId", DbType.Int32, hero.MilitaryRankId);
             db.AddInputParameter("@MilitaryAwardId", DbType.Int32, hero.MilitaryAwardId);
             db.AddInputParameter("@Biography", DbType.String, hero.Biography);
             db.AddInputParameter("@LanguageId", DbType.Int32, hero.LanguageId);
             db.AddInputParameter("@UpdatedBy", DbType.Int32, hero.UpdatedBy);
             db.AddInputParameter("@Photos", DbType.Xml, photos.ToDbXml());
             db.AddOutputParameter("@HeroId", DbType.Int32);
             try
             {
                 db.ExecuteNonQuery();
                 heroId = db.GetParameterValue<int>("@HeroId");
                 SaveBlobs(heroId, photos);
                 tran.Commit();
             }
             catch (SqlException ex)
             {
                 tran.Rollback();
                 Logger.Error("Error while creating hero", ex);
                 throw new RepositoryException("Oops! Something went wrong... :(", ex);
             }
             catch (Exception ex)
             {
                 tran.Rollback();
                 Logger.Error("Error while creating hero", ex);
                 throw new RepositoryException("Oops! Something went wrong... :(", ex);
             }
             return heroId;
         }
     }
 }
        public void UpdateHero(Hero hero, IEnumerable<IPostedFile> photos)
        {
            using (var tran = new DbTransactionManager())
            {
                try
                {
                    tran.BeginTransaction();
                    using (var db = new DataAccess(tran))
                    {
                        db.CreateStoredProcCommand("dbo.UpdateHero");
                        db.AddInputParameter("@HeroId", DbType.Int32, hero.HeroId);
                        db.AddInputParameter("@FirstName", DbType.String, hero.FirstName);
                        db.AddInputParameter("@LastName", DbType.String, hero.LastName);
                        db.AddInputParameter("@MiddleName", DbType.String, hero.MiddleName);
                        db.AddInputParameter("@Dob", DbType.DateTime, hero.Dob);
                        db.AddInputParameter("@Died", DbType.DateTime, hero.Died);
                        db.AddInputParameter("@MilitaryGroupId", DbType.Int32, hero.MilitaryGroupId);
                        db.AddInputParameter("@MilitaryRankId", DbType.Int32, hero.MilitaryRankId);
                        db.AddInputParameter("@MilitaryAwardId", DbType.Int32, hero.MilitaryAwardId);
                        db.AddInputParameter("@Biography", DbType.String, hero.Biography);
                        db.AddInputParameter("@LanguageId", DbType.Int32, hero.LanguageId);
                        db.AddInputParameter("@UpdatedBy", DbType.Int32, hero.UpdatedBy);
                        db.AddInputParameter("@Photos", DbType.Xml, photos.ToDbXml());

                        db.ExecuteNonQuery();
                        SaveBlobs(hero.HeroId.Value, photos);
                        tran.Commit();
                    }
                }
                catch (Exception ex)
                {                    
                    tran.Rollback();
                    Logger.Error("Error while updating hero", ex);
                    throw;
                }
            }
        }