Dapper returns 不同的列名
Dapper returns different column name
我正在使用 Dapper 在数据库中创建一个 select,而 return 以不同的方式显示列的名称。
有谁知道为什么会这样?
下图,左图(JSON return 来自 API),右图(SQL 服务器 Table)
JSON 结果:
C#代码:
控制器方法
IEnumerable<Romaneio> romaneios;
string query = "SELECT * FROM TB_ROMANEIOS";
romaneios = await connection.QueryAsync<Romaneio>(query)
Dapper使用的Class
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; }
}
你能post你要求 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?
}
}
}
这也值得一问,因为我认为我们都曾在某个时候犯过这个错误。但是您确定图片中显示的数据库就是您要查询的数据库吗?
我遇到了同样的问题,我通过重写属性名称解决了这个问题,在您的 class 中,您使用的是这样的:ROMANEIO_ID
。尝试重写为 romaneio_id
.
我正在使用 Dapper 在数据库中创建一个 select,而 return 以不同的方式显示列的名称。
有谁知道为什么会这样?
下图,左图(JSON return 来自 API),右图(SQL 服务器 Table)
JSON 结果:
C#代码:
控制器方法
IEnumerable<Romaneio> romaneios;
string query = "SELECT * FROM TB_ROMANEIOS";
romaneios = await connection.QueryAsync<Romaneio>(query)
Dapper使用的Class
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; }
}
你能post你要求 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?
}
}
}
这也值得一问,因为我认为我们都曾在某个时候犯过这个错误。但是您确定图片中显示的数据库就是您要查询的数据库吗?
我遇到了同样的问题,我通过重写属性名称解决了这个问题,在您的 class 中,您使用的是这样的:ROMANEIO_ID
。尝试重写为 romaneio_id
.