Mapper manuellement les noms de colonne avec les propriétés de classe

dapper

Question

Je suis nouveau sur Dapper Micro ORM. Jusqu'à présent, je suis capable de l'utiliser pour de simples éléments liés à ORM, mais je ne suis pas en mesure de mapper les noms des colonnes de la base de données avec les propriétés de la classe. Par exemple:

J'ai la table de base de données comme suit:

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

et j'ai la classe appelée personne

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

Veuillez noter que mes noms de colonne dans la table sont différents du nom de propriété de la classe à laquelle je tente de mapper les données que j'ai obtenues à partir du résultat de la requête.

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

Le code ci-dessus ne fonctionnera pas, car les noms de colonne ne correspondront pas aux propriétés (Person) de l'objet. Dans ce scénario, y a-t-il quelque chose que je puisse faire dans Dapper pour mapper manuellement (par exemple, person_id => PersonId ) les noms de colonne avec les propriétés de l’objet?

Tout indice ou aide serait très apprécié.

Réponse acceptée

Cela fonctionne 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 n'a aucune facilité qui vous permet de spécifier un attribut de colonne , je ne suis pas opposé à l'ajout d'un support, à condition que nous ne tirions pas la dépendance.


Réponse d'expert

Pendant un certain temps, les éléments suivants devraient fonctionner:

Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi