Dapper将列映射到实体属性?

Iva*_*ono 2 c# sql-server dapper

我正在使用Dapper的Query <>来搜索许多记录:

public class Product
{
    public int Id {get; set}
    public string Name {get; set}
    public int CategoryId {get; set}
]

public IEnumerable<Product> GetProducts(int categoryId)
{
    var connection = DataContext.Database.Connection;

    var sql = "SELECT * FROM products WHERE category_id = @categoryId";

    var result = connection.Query<Product>(sql, new { categoryId });

    return result;
}
Run Code Online (Sandbox Code Playgroud)

查询本身返回请求的记录,但列表中的每个对象都有空字段.

那么如何将列映射到实体的属性?

我不想在sql语句中添加列别名.装饰实体的属性也不是一种选择,因为实体是由EF设计者生成的.

Kri*_*ana 6

那么你的Product类必须定义,以匹配从查询返回的结果.所以你能做的是 -

public IEnumerable<Product> GetProducts(int categoryId)
{
    var connection = DataContext.Database.Connection;

    var sql = "SELECT * FROM products WHERE category_id = @categoryId";

    var result = connection.Query<Product>(sql, new { categoryId }).Select(p => new Product {
           Id = (int)p.ProductId,
           Name = (string)p.ProductName,
           CategoryId  = (int)p.ProductCategoryId
        });

    return result;
}
Run Code Online (Sandbox Code Playgroud)