엔티티 속성에 대한 매핑 맵을 Dapper로 매핑 하시겠습니까?

c# dapper sql-server

문제

Dapper 's 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;
}

쿼리 자체는 요청 된 레코드를 반환하지만 목록의 각 개체에는 빈 필드가 있습니다.

그렇다면 엔티티의 속성에 열을 어떻게 매핑 할 수 있습니까?

SQL 문에 열 별칭을 추가하고 싶지 않습니다. 엔터티가 EF 디자이너에 의해 생성되므로 엔터티의 속성을 장식하는 것도 옵션이 아닙니다.

수락 된 답변

제품 클래스는 쿼리에서 되돌아 오는 결과와 일치하도록 정의되어야합니다. 그래서 당신이 할 수있는 것은 -

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


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow