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(); } }
//operaciones public void Alta(Cliente unCliente) { SqlConnection _cnn = new SqlConnection(Conexion.Cnn); SqlCommand _comando = new SqlCommand("ClienteAlta", _cnn); _comando.CommandType = System.Data.CommandType.StoredProcedure; _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 _ParmRetorno = new SqlParameter("@Retorno", SqlDbType.Int); _ParmRetorno.Direction = ParameterDirection.ReturnValue; _comando.Parameters.Add(_ParmRetorno); SqlTransaction _miTransaccion = null; try { // conecto a la bd _cnn.Open(); //determino que voy a trabajar en una unica transaccion _miTransaccion = _cnn.BeginTransaction(); //ejecuto comando de alta del cliente en la transaccion _comando.Transaction = _miTransaccion; _comando.ExecuteNonQuery(); //verifico si hay errores int _Codcli = Convert.ToInt32(_ParmRetorno.Value); if (_Codcli == -1) { throw new Exception("Cliente ya existente"); } else if (_Codcli == -2) { throw new Exception("Error en chequeos de datos en la tabla"); } //si llego aca es pq pude dar de alta al cliente //genero alta para sus telefonos foreach (EntidadesCompartidas.Telefono unTel in unCliente.ListaTelefonos) { PersitenciaTelefono.Alta(unTel, _Codcli, _miTransaccion); } //si llegue aca es pq no hubo problemas con los telefonos _miTransaccion.Commit(); } catch (Exception ex) { _miTransaccion.Rollback(); throw new Exception(ex.Message); } 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(); } }
public void Alta(EntidadesCompartidas.Cliente unCliente) { SqlConnection _cnn = new SqlConnection(Conexion.MiConexion); SqlCommand _comando = new SqlCommand("AltaCliente", _cnn); _comando.CommandType = CommandType.StoredProcedure; _comando.Parameters.AddWithValue("@NomCli", unCliente.NomCli); _comando.Parameters.AddWithValue("@DirCli", unCliente.DirCli); SqlParameter _ParmRetorno = new SqlParameter("@Retorno", SqlDbType.Int); _ParmRetorno.Direction = ParameterDirection.ReturnValue; _comando.Parameters.Add(_ParmRetorno); SqlTransaction _miTransaccion = null; //el sql transaction tiene que estar por fuera del try poque sino no podemos acceder // try { //Conecto a la bd _cnn.Open(); //determino que voy a a trabajar en una unica transaccion _miTransaccion = _cnn.BeginTransaction(); //ejecuto comando de alta del cliente en la transaccion _comando.Transaction = _miTransaccion; _comando.ExecuteNonQuery(); //verifico si hay errores int _CodCli = Convert.ToInt32(_ParmRetorno.Value); if (_CodCli == -1) { throw new Exception("Cliente ya existente mi pari"); } else if (_CodCli == 0) { throw new Exception("Error no Especifiado"); } //si llego aca es porque puedo dar de alta un cliente //genero alta para sus telefonos foreach (EntidadesCompartidas.Telefono unTel in unCliente.LosTelefonos) { PersitenciaTelefono.Alta(unTel, _CodCli, _miTransaccion); /*a las acciones que se van a repetir le pasamos la transaccion y no la coneccion porque la transaccion sabe que conexion usar*/ } //si llege aca es porque no hubo problemas con los telefonos _miTransaccion.Commit(); } catch (Exception ex) { _miTransaccion.Rollback(); throw ex; } finally { _cnn.Close(); } }//Fin de la op alta