EF Core 使用 FromSqlRaw 执行 SQL 并映射到 DTO 对象
EF Core 提供了一个 FromSqlRaw 方法,可以直接执行 SQL 并将结果转换为指定的泛型对象。这个方法非常有用,尤其是在需要执行自定义 SQL 查询或需要将查询结果映射到一个并非数据库表对应的实体的 DTO 对象时。
示例:将聚合结果映射到 DTO 对象
以下示例展示了如何使用 FromSqlRaw 将 MyTable 表中聚合后的结果映射到一个名为 MyDto 的 DTO 对象。
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; }
}
在上面的代码中,Column1 属性对应 column1 列,而 TotalCount 属性对应 Total 列。
总结
FromSqlRaw 方法为 EF Core 提供了一种灵活的方式来执行自定义 SQL 查询,并将其结果映射到所需的 DTO 对象。通过使用 Column 属性,可以轻松地解决列名与属性名不一致的问题。
原文地址: https://www.cveoy.top/t/topic/j0Rs 著作权归作者所有。请勿转载和采集!