Работайте с Dapper, чтобы выполнять вызовы SQL и сопоставлять их с объектами. У меня проблема с вызовом SQL Dapper, который неправильно соответствует классу С#.
Используйте ASP.NET Core API и получите контроллер и класс.
Класс контроллера
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);
}
}
}
Класс продукта
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
}
]
При использовании вышеизложенного без сопоставления с классом я получаю правильные данные. Я не знаю, что я делаю неправильно
[
{
"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
}
]
Решение проблемы
Я не знаю, что я делаю неправильно
Потому JsonPropertyName
что это для сериализации Json вместо Dapper ORM
поэтому нам может потребоваться изменить свойство класса, как показано ниже, или @Yong Shun, например, изменить псевдоним сценария, который соответствует вашему свойству С# (с учетом регистра)
public class Products
{
public string product_name { get; set; }
public int model_year { get; set; }
public double list_price { get; set; }
}
Я думаю, нам может понадобиться использовать наш клиент в качестве ссылки вместо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; }
}
Также здесь есть ссылка на версию 2: атрибуты [столбца] и [таблицы] #722, сопровождающий dapper обсуждает атрибуты сопоставления столбцов для dapper.
Комментариев нет:
Отправить комментарий