public void ModificarTelefonos(EntidadesCompartidas.Cliente unCliente) { SqlConnection _cnn = new SqlConnection(Conexion.MiConexion); SqlTransaction _miTransaccion = null; try { //Abrimos la conexion _cnn.Open(); //determino que voy a trabajar en una unica transaccion _miTransaccion = _cnn.BeginTransaction(); //elimino todos los telefonos PersitenciaTelefono.EliminarTelsCliente(unCliente, _miTransaccion); //genero alta para los telefonos nuevos foreach (EntidadesCompartidas.Telefono unTel in unCliente.LosTelefonos) { PersitenciaTelefono.Alta(unTel, unCliente.CodCLi, _miTransaccion); } _miTransaccion.Commit(); } catch (Exception ex) { _miTransaccion.Rollback(); throw ex; } finally { _cnn.Close(); } }
public void Modificar(Cliente unCliente) { SqlConnection _cnn = new SqlConnection(Conexion.Cnn); SqlCommand _comando = new SqlCommand("ClienteModificar", _cnn); _comando.CommandType = System.Data.CommandType.StoredProcedure; _comando.Parameters.AddWithValue("@NumCli", unCliente.NumCli); _comando.Parameters.AddWithValue("@NomCli", unCliente.NomCli); _comando.Parameters.AddWithValue("@DirCli", unCliente.DirCli); _comando.Parameters.AddWithValue("@UsuCli", unCliente.UsuCli); _comando.Parameters.AddWithValue("@PassCli", unCliente.PassCli); SqlParameter _retorno = new SqlParameter("@Retorno", System.Data.SqlDbType.Int); _retorno.Direction = System.Data.ParameterDirection.ReturnValue; _comando.Parameters.Add(_retorno); SqlTransaction _miTransaccion = null; try { // conecto a la bd _cnn.Open(); //determino que voy a trabajar en una unica transaccion _miTransaccion = _cnn.BeginTransaction(); //elimino todos los telefonos anteriores PersitenciaTelefono.EliminarTelsCliente(unCliente, _miTransaccion); //mando a modificar al cliente _comando.Transaction = _miTransaccion; _comando.ExecuteNonQuery(); if ((int)_retorno.Value == -1) { throw new Exception("El cliente no existe"); } else if ((int)_retorno.Value == -2) { throw new Exception("Error en Modificacion del cliente"); } //si llego aca es pq pude modificar al cliente //genero alta para sus telefonos foreach (EntidadesCompartidas.Telefono unTel in unCliente.ListaTelefonos) { PersitenciaTelefono.Alta(unTel, unCliente.NumCli, _miTransaccion); } //si llegue aca es pq no hubo problemas con los telefonos _miTransaccion.Commit(); } catch (Exception ex) { _miTransaccion.Rollback(); throw ex; } finally { _cnn.Close(); } }