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 对象的属性一一对应。
EF Core 如何将 SQL 查询结果映射到自定义 DTO 对象

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

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