EF CORE 如何直接执行SQL并转化为指定的泛型对象这个对象并非一个数据库表对应的实体而是一个DTO其中部分字段需要聚合
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 著作权归作者所有。请勿转载和采集!