jaquel / dapper-dot-net

Automatically exported from code.google.com/p/dapper-dot-net
Other
0 stars 0 forks source link

Como usar Dapper #172

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Hola, como puedo mapear los datos de una tabla con dapper, en que consiste esta 
herramienta, como se usa cual es el primer paso, pq antes de comenzar a 
trabajar hay que mapear.

Original issue reported on code.google.com by pavilan...@gmail.com on 15 Apr 2014 at 11:29

GoogleCodeExporter commented 9 years ago
Google translate says:

"Hello, how can I map the data from a table with dapper, consisting in this 
tool, which is used as the first step, pq before starting work must be mapped."

Please can you rephrase? The question is very unclear.

Original comment by marc.gravell on 15 Apr 2014 at 12:10

GoogleCodeExporter commented 9 years ago
"Hello, how can I map the data from a table with dapper, consisting in this 
tool, which is used as the first step, pq before starting work must be mapped."

Original comment by pavilan...@gmail.com on 16 Apr 2014 at 12:38

GoogleCodeExporter commented 9 years ago
Yes, I already ran it through google translate. I don't understand the 
question. Please rephrase. Not repeat.

Original comment by marc.gravell on 16 Apr 2014 at 9:14

GoogleCodeExporter commented 9 years ago
Hola con Dapper se puede mapear las tablas de las base de datos? para ya no
estar escribiendo código mapeando las entidades una a una.

2014-04-15 7:10 GMT-05:00 <dapper-dot-net@googlecode.com>:

Original comment by pavilan...@gmail.com on 16 Apr 2014 at 9:25

GoogleCodeExporter commented 9 years ago
That still isn't very clear, but if you want automatic mapping to multiple 
tables, look at dapper.rainbow, which provides much of this. Dapper *core* is 
simply a wrapper around TSQL and types.

Original comment by marc.gravell on 16 Apr 2014 at 9:42

GoogleCodeExporter commented 9 years ago
pavilan efectivamente. Con Dapper lo que haces es crear la consulta (o llamada 
a un procedimiento almacenado) y el orm lo que hace es mapear cada columna de 
la tabla con su correspondiente propiedad de la clase con la que quieres 
mapear. Por ejemplo en el siguiente método yo ejecuto un procedimiento 
almacenado que recibe varios parámetros:

    public void Modificar(Domain.Empresa empresa)
    {
      var parametros = new DynamicParameters();
      parametros.Add("@Id", empresa.Id);
      parametros.Add("@Nit", empresa.Nit);
      parametros.Add("@DVNit", empresa.DVNit);
      parametros.Add("@RazonSocial", empresa.RazonSocial);
      parametros.Add("@Direccion", empresa.Direccion);
      parametros.Add("@Ciudad", empresa.Ciudad);
      parametros.Add("@Telefono", empresa.Telefono);
      Dapper.SqlMapper.Execute(_conexion, "spfe_EmpresaModificar", parametros, commandType: CommandType.StoredProcedure);
    }
  }

El objeto _conexion es simplemente un SQLConnection:

_conexion = new 
SqlConnection(ConfigurationManager.ConnectionStrings["Dapper"].ConnectionString)
;

En este caso fue fácil por que simplemente llamé un SP, pero la gracia de 
Dapper es cuando quieres devolver objetos:

    public List<Domain.Cliente> Listar(int empresaId)
    {
      var parametros = new DynamicParameters();
      parametros.Add("@EmpresaId", empresaId);
      return Dapper.SqlMapper.Query<Domain.Cliente>(_conexion, "spfe_ClienteListar", parametros, commandType: CommandType.StoredProcedure).ToList();
    }

La clase Cliente:

  public class Cliente: Entidad
  {
    public int Nit { get; internal set; }
    public int DVNit { get; internal set; }
    public string Nombre { get; internal set; }
    public string Direccion { get; internal set; }
    public string Telefono { get; internal set; }
    public string Email { get; internal set; }
    public string Ciudad { get; internal set; }
    public int EmpresaId { get; internal set; }

    internal Cliente()
    {
    }
  }

Fíjate que lo que hace es llamar a un SP pasándole un parámetro. Dapper lo 
que hace es mapear ese resultado con objetos de tipo Domain.Cliente. Si 
encuentra el match por nombre de columna le asocia el valor. Esto ya que usa 
una propiedad dynamic de .Net que mira contra qué objeto quieres mapear y 
empieza a armar el mapeo.

Adicional a eso, tiene un sistema de memoria para que las siguientes peticiones 
no vayan al servidor de base de datos, si es que ya fue ejecutada alguna vez: 
lo almacena en memoria y luego lo puedes ocupar. Eso nunca lo he usado ya que 
es una característica que los creadores usan mucho en stackoverflow.com según 
leí, pero no lo conozco bien aún. 

Fíjate en la página de inicio, ahí salen ejemplos sobre cómo usarlo. Es muy 
sencillo: https://code.google.com/p/dapper-dot-net/

Para finalizar: con Dapper no necesitas mapear con Xml ni nada similar. Es 
llegar e identificar las columnas según las propiedades de la clase con la que 
mapeas.

Saludos

Original comment by juanpabl...@gmail.com on 4 Aug 2014 at 2:27

GoogleCodeExporter commented 9 years ago
Gracias por la explicación, excelente.

-----Mensaje original-----
De: "dapper-dot-net@googlecode.com" <dapper-dot-net@googlecode.com>
Enviado el: ‎04/‎08/‎2014 09:27 a. m.
Para: "pavilan154@gmail.com" <pavilan154@gmail.com>
Asunto: Re: Issue 172 in dapper-dot-net: Como usar Dapper

Original comment by pavilan...@gmail.com on 4 Aug 2014 at 5:56

GoogleCodeExporter commented 9 years ago
I have no clue what is happening in this conversation, but I'm going to assume 
that the  "Gracias por la explicación, excelente." indicates that whatever the 
question is: it is answered. I'm going to close, but if I have misunderstood, 
please post back *preferably in English*, so that I know.

Original comment by marc.gravell on 4 Aug 2014 at 6:36