public static int Insert(Publicacion publication) { //Tiene que insertar en la tabla TL_Publicacion, TL_Rubro_Publicacion using (var transaction = DataBaseManager.Instance().Connection.BeginTransaction(IsolationLevel.Serializable)) { try { publication = Insert(publication, transaction); var categoriesAdded = RubroPersistance.InsertByPublication(publication, transaction); if (categoriesAdded > 0) { transaction.Commit(); return(1); } transaction.Rollback(); return(0); } catch (Exception) { transaction.Rollback(); throw new Exception("Se produjo un error durante la insercion de la publicacion"); } } }
public static int Update(Publicacion publication) { /* Lo tengo que hacer transaccionado ya que no quiero que pueda llegar a quedar un rol insertado * sin las funcionalidades asociadas debido a un error */ using (var transaction = DataBaseManager.Instance().Connection.BeginTransaction(IsolationLevel.Serializable)) { try { Update(publication, transaction); if (RubroPersistance.DeleteByPublication(publication, transaction) > 0) { if (RubroPersistance.InsertByPublication(publication, transaction) > 0) { //La unica forma que se realice la transaction: borro todas los rubros viejos e inserto los nuevos transaction.Commit(); return(1); } else { //Tuvo que haber insertado por lo menos uno, sino es un error transaction.Rollback(); return(0); } } else { //Tuvo que haber insertado por lo menos uno, sino es un error transaction.Rollback(); return(0); } } catch (Exception) { transaction.Rollback(); throw new Exception("Se produjo un error durante la modificacion de la publicacion"); } } }