EF Core 如何将 SQL 查询结果映射到自定义 DTO 对象
EF Core 提供了 FromSqlRaw 方法,可以直接执行 SQL 语句并将结果转化为指定的泛型对象。这个对象并非一个数据库表对应的实体,而是一个 DTO,也不再 DbContext 中,其中部分字段可能需要聚合内容。
示例代码
public class MyDto
{
public int Id { get; set; }
public string Name { get; set; }
public int TotalCount { get; set; }
}
public List<MyDto> GetMyDtoList()
{
using (var context = new MyDbContext())
{
var result = context.MyEntities
.FromSqlRaw('SELECT Id, Name, COUNT(*) AS TotalCount FROM MyTable GROUP BY Id, Name')
.Select(x => new MyDto { Id = x.Id, Name = x.Name, TotalCount = x.TotalCount })
.ToList();
return result;
}
}
在这个例子中,我们执行了一个 SQL 语句,对 MyTable 表进行了聚合操作,并将结果转化为 MyDto 对象。
注意
FromSqlRaw方法只能用于查询操作,不能用于修改、删除等操作。- 需要确保 SQL 语句的执行结果与 DTO 对象的属性一一对应。
原文地址: https://www.cveoy.top/t/topic/j0RB 著作权归作者所有。请勿转载和采集!