【问题标题】:Dapper returns different column nameDapper 返回不同的列名
【发布时间】:2017-08-19 02:15:27
【问题描述】:

我正在使用 Dapper 在数据库中进行选择,返回显示的列名称不同。

有人知道为什么会这样吗?

下图,左(从 API 返回 JSON),右(SQL Server 表)

JSON 结果:


C# 代码:

控制器方法

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

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; }
}

【问题讨论】:

    标签: asp.net .net sql-server sql-server-2008-r2 dapper


    【解决方案1】:

    我遇到了同样的问题,我通过重写属性名称解决了这个问题,在你使用的类中是这样的:ROMANEIO_ID。尝试改写为romaneio_id

    【讨论】:

    • 成功了。我更改了属性的名称,现在一切都是小写的。 PimBrouwers,Eduardo Nery,谢谢大家。
    【解决方案2】:

    您能否发布您要求 Dapper 映射到的 CLR 对象?

    直接使用 ADO.NET 会产生相同的结果吗?

    例如:

    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?
           }
       }
    }
    

    这也值得一问,因为我认为我们都曾在某个时候犯过这个错误。但是您确定图片中显示的数据库就是您要查询的数据库吗?

    【讨论】:

    • 您好 PimBrouwers,谢谢。我在另一个项目中用 ADO 测试了 SELECT 语句,结果是正确的,返回列的名称与数据库中存在的名称相同。
    • 我已经在上面包含了 Dapper 使用的类。
    • 这太奇怪了....您是否考虑过附加dapper项目和调试?过去当我注意到uniqueidentifier 的问题时,我不得不这样做。它不可避免地导致我为SqlConnectionSqlCommandSqlDataReader 编写自己的一组扩展方法。
    • 是的,很奇怪。我使用了调试器,在调试属性中我显示了列的当前名称,就像在数据库中一样。但是在浏览器中,列的名称是不同的。我已经更改了浏览器并使用了 Postman,但结果仍然存在。我不知道。是否有任何可能导致数据库中出现此问题的东西?你怎么看
    • 您使用什么库进行序列化?你能显示那个代码吗?
    猜你喜欢
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2016-10-07
    • 2016-08-12
    相关资源
    最近更新 更多