public DbParameter CrearParametro(string nombreColumna, Persona persona, DbCommand comando, bool esParametroDeSalida)
 {
     var parametro = comando.CreateParameter();
     parametro.ParameterName = string.Format("@{0}", nombreColumna);
     parametro.Value = TraerValorDePropiedad(persona, nombreColumna);
     parametro.Direction = esParametroDeSalida ? ParameterDirection.InputOutput : ParameterDirection.Input;
     return parametro;
 }
 public DbCommand CrearComandoConParametros(string nombreProcedimiento, Persona persona)
 {
     var cmd = CrearCommando(nombreProcedimiento);
     cmd.Parameters.Add(CrearParametro("Id", persona, cmd, false));
     cmd.Parameters.Add(CrearParametro("Nombre", persona, cmd, false));
     cmd.Parameters.Add(CrearParametro("Apellido1", persona, cmd, false));
     cmd.Parameters.Add(CrearParametro("Apellido2", persona, cmd, false));
     cmd.Parameters.Add(CrearParametro("CorreoElectronico", persona, cmd, false));
     return cmd;
 }
 public Persona AgregarPersona(Persona persona)
 {
     var cmd = Contexto.CrearComandoConParametros("[dbo].[usp_AgregarPersona]", persona);
     cmd.Connection.Open();
     cmd.Transaction = cmd.Connection.BeginTransaction();
     var id = cmd.ExecuteScalar();
     persona.Id = Convert.ToInt32(id);
     cmd.Transaction.Commit();
     cmd.Connection.Close();
     return persona;
 }
 public Persona TraerPersona(int id)
 {
     var persona = new Persona();
     var cmd = Contexto.CrearCommando("[dbo].[usp_TraerPersona]");
     cmd.Parameters.Add(Contexto.CrearParametro("Id", new Persona() {Id = id}, cmd, false));
     cmd.Connection.Open();
     using (var reader = cmd.ExecuteReader(CommandBehavior.SingleResult))
     {
         while (reader.Read())
         {
             persona = Contexto.CargarPersonaDeReader(reader);
         }
         reader.Close();
     }
     cmd.Connection.Close();
     return persona;
 }
 private static object TraerValorDePropiedad(Persona persona, string nombreDePropiedad)
 {
     return persona.GetType().GetProperty(nombreDePropiedad).GetValue(persona, null);
 }
 public void EditarPersona(Persona persona)
 {
     var cmd = Contexto.CrearComandoConParametros("[dbo].[usp_ModificarPersona]", persona);
     cmd.Connection.Open();
     cmd.Transaction = cmd.Connection.BeginTransaction();
     cmd.ExecuteNonQuery();
     cmd.Transaction.Commit();
     cmd.Connection.Close();
 }
 public void MostrarPersona(Persona persona)
 {
     Console.WriteLine("Id....: {0}", persona.Id);
     Console.WriteLine("Nombre: {0} {1} {2}", persona.Nombre, persona.Apellido1, persona.Apellido2);
     Console.WriteLine("Email.: {0}", persona.CorreoElectronico);
 } 
 public Persona DatosPersona()
 {
     var persona = new Persona();
     Console.Write("Nombre............: ");
     persona.Nombre = Console.ReadLine();
     Console.Write("Primer Apellido...: ");
     persona.Apellido1 = Console.ReadLine();
     Console.Write("Segundo Apellido..: ");
     persona.Apellido2 = Console.ReadLine();
     Console.Write("Correo Electronico: ");
     persona.CorreoElectronico = Console.ReadLine();
     return persona;
 }