EF Core 提供了执行原始 SQL 的方法,可以使用 'FromSqlRaw()' 方法执行 SQL 查询,并将结果映射到 DTO 对象中。

例如,假设有一个包含订单信息的表,我们想要聚合每个客户的订单总金额,并返回一个 DTO 对象,可以使用以下代码:

public class CustomerOrderTotalDto
{
    public string CustomerName { get; set; } 
    public decimal OrderTotal { get; set; }
}

public List<CustomerOrderTotalDto> GetCustomerOrderTotals()
{
    string sql = @"SELECT c.CustomerName, SUM(o.OrderTotal) AS OrderTotal FROM Customers c INNER JOIN Orders o ON c.CustomerId = o.CustomerId GROUP BY c.CustomerName";

    using (var context = new MyDbContext())
    {
        return context.CustomerOrderTotalDtos.FromSqlRaw(sql).ToList();
    }
}

在上面的代码中,我们创建了一个名为 'CustomerOrderTotalDto' 的 DTO 对象,该对象具有两个属性: 'CustomerName' 和 'OrderTotal'。然后,我们编写了一个 SQL 查询,使用 'SUM()' 函数聚合每个客户的订单总金额,并将结果映射到 DTO 对象中。最后,我们使用 'FromSqlRaw()' 方法执行 SQL 查询,并将结果映射到 DTO 对象列表中。

注意,在使用 'FromSqlRaw()' 方法时,需要确保 SQL 查询中的字段名称与 DTO 对象中的属性名称相匹配,以便正确地进行映射。

EF Core 使用 FromSqlRaw() 方法执行 SQL 聚合并映射到 DTO 对象

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

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