Pourquoi mes objets renvoyés par Dapper ont-ils des valeurs de propriété nulles et par défaut?

.net c# dapper

Question

J'utilise Dapper dans un référentiel pour mapper les résultats d'une requête à une liste de type DTO que mon API doit renvoyer. Tout semble fonctionner correctement, mais une fois la requête et le mappage terminés, le nombre correct d'objets est renseigné dans la liste, mais toutes les propriétés int sont à 0 et les chaînes sont nulles. J'ai beaucoup utilisé Dapper sur d'autres projets et je ne l'ai jamais rencontré auparavant. J'ai également vérifié que les données sont correctes et si je copie la requête dans SQL Management Studio, cela me donne les données correctes.

Voici le constructeur de ma classe de base de référentiel contenant la logique de mappage personnalisée. J'ai confirmé que ce code est touché.

static BaseRepository()
{
    SqlMapper.SetTypeMap(typeof(T),
      new CustomPropertyTypeMap(
          typeof(T), (type, columnName) => type.GetProperties()
              .FirstOrDefault(prop => prop.GetCustomAttributes(false)
                      .OfType<ColumnAttribute>()
                      .Any(attr => attr.Name == columnName))));
}

Voici la méthode de dépôt pour remplir la liste:

public IEnumerable<Dog> GetAll()
{
    var dogs = Db.Query<Dog>(@"SELECT Id, Name FROM Dogs");
    return dogs;
}

Et voici mon objet:

[DataContract]
public class Dog
{
    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public string Name { get; set; }
}

J'ai donc confirmé que la variable "dogs" est remplie, mais que tous les éléments Id et Name sont 0 ou null. Voici à quoi ressemble le résultat JSON final:

[
    {
        Id: 0,
        Name: null
    },
    {
        Id: 0,
        Name: null
    },
    {
        Id: 0,
        Name: null
    }

]

J'ai également essayé d'ajouter des attributs de colonne aux propriétés, comme [Column(Name = "Id")] . Toujours pas de chance. Qu'est-ce que je regarde?

Edit: J'ai pu résoudre ce problème en utilisant l'exemple de code et l'essentiel de cette réponse .

Réponse d'expert

Vous semblez avoir une carte personnalisée qui utilise [Column("Id")] etc pour définir / reconnaître les colonnes. Cependant, vous n'avez pas ajouté cet attribut - donc aucune colonne ne sera trouvée ...



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