2017-08-19 1 views
1

J'utilise Dapper pour faire un select dans la base de données et le retour affiche le nom des colonnes différemment.Dapper renvoie le nom de la colonne différente

Est-ce que quelqu'un sait pourquoi cela se produit?

image ci-dessous, à gauche (JSON retour de l'API), à droite (tableau SQL Server)

résultat JSON:

JSON result


code C#:

Méthode de contrôleur

IEnumerable<Romaneio> romaneios; 
string query = "SELECT * FROM TB_ROMANEIOS"; 
romaneios = await connection.QueryAsync<Romaneio>(query) 

La classe utilisée par Dapper

public class Romaneio 
{ 
    public string ROMANEIO_ID { get; set; } 
    public string PRODUTO_ID { get; set; } 
    public string DESCRICAO { get; set; } 
    public string QTD_PALLET { get; set; } 
    public string QTD_CX { get; set; } 
    public string QTD_TOTAL { get; set; } 
    public string QTD_CX_PL { get; set; } 
    public string QTD_UN_CX { get; set; } 
    public int STATUS_ROMANEIO { get; set; } 
    public DateTime DATA_ROMANEIO { get; set; } 
} 

Répondre

0

J'ai eu le même problème et je l'ai résolu en réécrivant le nom des attributs, dans votre classe que vous utilisez comme ceci: ROMANEIO_ID. Essayez de réécrire au romaneio_id.

+0

Cela a fonctionné. J'ai changé le nom des attributs, maintenant tout est en minuscules. PimBrouwers, Eduardo Nery, merci pour tous. –

0

Pouvez-vous poster l'objet CLR vous demandez Dapper à mapper?

L'utilisation d'ADO.NET donne-t-elle directement le même résultat?

Par exemple:

using(var conn = new SqlConnection("your connection string") 
{ 
    await conn.OpenAsync(); 

    using(var cmd = new SqlCommand("select * from TB_ROMANEIS", conn) 
    using(var rd = await cmd.ExecuteReaderAsync()) 
    { 
     while(await rd.ReadAsync()){ 
      var test = rd.GetValue(rd.GetOrdinal("STATUS_ROMANEIO")); 
      //what does test == here? 
     } 
    } 
} 

Il est également intéressant de se demander, parce que je pense que nous avons tous fait cette erreur à un moment donné. Mais êtes-vous absolument sûr que la base de données montrée dans l'image est celle que vous interrogez?

+0

Bonjour PimBrouwers, merci. J'ai testé l'instruction SELECT avec ADO dans un autre projet et le résultat était correct, le nom de la colonne de retour était le même que le nom présent dans la base de données. –

+1

J'ai inclus la classe utilisée par Dapper juste au-dessus. –

+0

Cela est incroyablement étrange .... Avez-vous considéré en pièce jointe le projet dapper et le débogage? J'ai dû le faire dans le passé quand j'ai remarqué un problème avec 'uniqueidentifier'. Cela m'a inévitablement conduit à écrire mon propre ensemble de méthodes d'extension pour 'SqlConnection',' SqlCommand' et 'SqlDataReader'. – pimbrouwers