Dapper SQL 调用返回 NULL 和 0 值
Dapper SQL Call Returning NULL and 0 values
与 Dapper 合作进行 SQL 调用并将它们映射到对象。
我遇到 SQL Dapper 调用未正确映射到 C# Class.
的问题
使用 ASP.NET 核心 API 并且有一个控制器和一个 class。
控制器Class
public class DapperController : Controller
{
private const string connectionString = @"";
[HttpGet("")]
public async Task<IActionResult> Index()
{
var sql = @"SELECT product_name, model_year,list_price
FROM [production].[products]";
using (SqlConnection connection = new SqlConnection(connectionString)) {
connection.Open();
var product = await connection.QueryAsync<Products>(sql);
return Ok(product);
}
}
}
产品Class
public class Products
{
[JsonPropertyName("product_name")]
public string ProductName { get; set; }
[JsonPropertyName("model_year")]
public int ModelYear { get; set; }
[JsonPropertyName("list_price")]
public double ListPrice { get; set; }
}
正在取回以下数据,但这是不正确的,因为数据库确实有数据
[
{
"product_name": null,
"model_year": 0,
"list_price": 0
},
{
"product_name": null,
"model_year": 0,
"list_price": 0
}
]
在不映射到 class 的情况下使用上述内容时,我得到了正确的数据。不确定我做错了什么
[
{
"product_name": "Trek 820 - 2016",
"model_year": 2016,
"list_price": 379.99
},
{
"product_name": "Ritchey Timberwolf Frameset - 2016",
"model_year": 2016,
"list_price": 749.99
}
]
Not sure what I am doing wrong
因为 JsonPropertyName
用于 Json 序列化而不是 Dapper ORM
这样我们可能需要修改 class 属性 如下代码或
@Yong Shun as say 修改与您的c#对齐的脚本别名属性(区分大小写)
public class Products
{
public string product_name { get; set; }
public int model_year { get; set; }
public double list_price { get; set; }
}
我认为我们可能需要使用我们的客户作为这个 link ColumnAttribute
而不是 JsonPropertyName
我们的客户地图需要实现SqlMapper.ITypeMap
public class Products
{
[Column("product_name")]
public string ProductName { get; set; }
[Column("model_year")]
public int ModelYear { get; set; }
[Column("list_price")]
public double ListPrice { get; set; }
}
这里还有一个link V2: [Column] and [Table] Attributes #722dapper官方讨论的dapper的Column mapping attributes
与 Dapper 合作进行 SQL 调用并将它们映射到对象。 我遇到 SQL Dapper 调用未正确映射到 C# Class.
的问题使用 ASP.NET 核心 API 并且有一个控制器和一个 class。
控制器Class
public class DapperController : Controller
{
private const string connectionString = @"";
[HttpGet("")]
public async Task<IActionResult> Index()
{
var sql = @"SELECT product_name, model_year,list_price
FROM [production].[products]";
using (SqlConnection connection = new SqlConnection(connectionString)) {
connection.Open();
var product = await connection.QueryAsync<Products>(sql);
return Ok(product);
}
}
}
产品Class
public class Products
{
[JsonPropertyName("product_name")]
public string ProductName { get; set; }
[JsonPropertyName("model_year")]
public int ModelYear { get; set; }
[JsonPropertyName("list_price")]
public double ListPrice { get; set; }
}
正在取回以下数据,但这是不正确的,因为数据库确实有数据
[
{
"product_name": null,
"model_year": 0,
"list_price": 0
},
{
"product_name": null,
"model_year": 0,
"list_price": 0
}
]
在不映射到 class 的情况下使用上述内容时,我得到了正确的数据。不确定我做错了什么
[
{
"product_name": "Trek 820 - 2016",
"model_year": 2016,
"list_price": 379.99
},
{
"product_name": "Ritchey Timberwolf Frameset - 2016",
"model_year": 2016,
"list_price": 749.99
}
]
Not sure what I am doing wrong
因为 JsonPropertyName
用于 Json 序列化而不是 Dapper ORM
这样我们可能需要修改 class 属性 如下代码或 @Yong Shun as say 修改与您的c#对齐的脚本别名属性(区分大小写)
public class Products
{
public string product_name { get; set; }
public int model_year { get; set; }
public double list_price { get; set; }
}
我认为我们可能需要使用我们的客户作为这个 link ColumnAttribute
而不是 JsonPropertyName
我们的客户地图需要实现SqlMapper.ITypeMap
public class Products
{
[Column("product_name")]
public string ProductName { get; set; }
[Column("model_year")]
public int ModelYear { get; set; }
[Column("list_price")]
public double ListPrice { get; set; }
}
这里还有一个link V2: [Column] and [Table] Attributes #722dapper官方讨论的dapper的Column mapping attributes