EF Core 提供了一个 FromSqlRaw 方法,可以直接执行 SQL 并将结果转换为指定的泛型对象,如下所示:

var results = _context.Set<MyDto>().FromSqlRaw("SELECT column1, SUM(column2) as Total FROM MyTable GROUP BY column1")
    .ToList();

在这个例子中,我们执行了一个 SQL 查询,该查询聚合了 MyTable 表中的数据,并将结果转换为一个 MyDto 对象的列表。MyDto 对象可以是任何类型,不一定是一个数据库表对应的实体。

需要注意的是,在使用 FromSqlRaw 方法时,查询结果的列名必须与 DTO 对象的属性名一致,否则将无法正确地转换结果。如果查询结果中的列名与属性名不一致,可以使用 Column 属性来映射列名和属性名,如下所示:

public class MyDto
{
    public string Column1 { get; set; }
    [Column("Total")]
    public int TotalCount { get; set; }
}
``

原文地址: http://www.cveoy.top/t/topic/czLy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录