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; } } }