Comment mapper une colonne d'identité, qui a un nom différent, avec Dapper?

c# dapper

Question

J'ai une base de données avec des colonnes d'ID telles que BookId, AuthorId, etc. Mes fichiers de code ont cependant une propriété Id. Je tente de convertir des parties du programme qui utilisent NHibernate avec Dapper, alors j'essaie d'éliminer la nécessité d'utiliser à la fois une propriété Id et une propriété BookId. NHibernate possède une carte d'identité intégrée qui mappe BookId sur la propriété Id des objets Book et, de même, AuthorId sur la propriété Id des objets Author.

Est-il possible de faire ce Dapper, en dehors de donner un alias à la colonne, dans la requête sql?

public class Book {
  public int Id { get; set; }
  public string Name { get; set; }
}

public class Author {
  public int Id { get; set; }
  public string Name { get; set; }
}

Un exemple de requête que j'utilise ressemble à ceci:

select * from Books b inner join Author a on a.AuthorId = b.AuthorId

Si Dapper ne supporte pas cela facilement, des idées sur les autres options que j'ai?

Réponse acceptée

De par sa conception, dapper n'a pas de couche de mappage. Un pas dans cette voie, et avant que nous sachions ce qui s’est passé tout à coup, nous allons nous noyer dans des fichiers de configuration. Donc: deux options:

  • ajouter un alias dans le SQL
  • ajouter une cale dans le C #

soit soit (sql):

select BookId as [Id], Name from Books

ou (C #):

private int BookId { get { return Id; } set { Id = value; } } // just for dapper



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