Manualmente mapear nombres de columna con propiedades de clase

dapper

Pregunta

Soy nuevo en Dapper Micro ORM. Hasta ahora, puedo usarlo para materiales ORM relacionados pero no puedo mapear los nombres de las columnas de la base de datos con las propiedades de la clase. Por ejemplo:

Tengo la tabla de la base de datos de la siguiente manera:

Table Name: Person
person_id  int
first_name varchar(50)
last_name  varchar(50)

y tengo la clase llamada Persona

public class Person 
{
    public int PersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

Tenga en cuenta que los nombres de mi columna en la tabla son diferentes del nombre de la propiedad de la clase a la que estoy tratando de asignar los datos que obtuve del resultado de la consulta.

var sql = @"select top 1 PersonId,FirstName,LastName from Person";
using (var conn = ConnectionFactory.GetConnection())
{
    var person = conn.Query<Person>(sql).ToList();
    return person;
}

El código anterior no funcionará ya que los nombres de las columnas no coincidirán con las propiedades del objeto (Persona). En este escenario, ¿hay algo que pueda hacer en Dapper para mapear manualmente (por ejemplo, person_id => PersonId ) los nombres de las columnas con las propiedades del objeto?

Cualquier pista o ayuda sería muy apreciada.

Respuesta aceptada

Esto funciona bien:

var sql = @"select top 1 person_id PersonId, first_name FirstName, last_name LastName from Person";
using (var conn = ConnectionFactory.GetConnection())
{
    var person = conn.Query<Person>(sql).ToList();
    return person;
}

Dapper no tiene ninguna función que le permita especificar un atributo de columna , no estoy en contra de agregar soporte para ello, siempre que no logremos la dependencia.


Respuesta experta

Por algún tiempo, lo siguiente debería funcionar:

Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué