在使用 ASP.NET Core Web API 时,我们经常需要使用 Entity Framework Core(EF Core)来查询数据库中的数据。但是,我们不应该直接将查询结果暴露给客户端,而是应该将其转换为 DTO(数据传输对象)。

以下是将 EF Core 查询结果转换为 DTO 的示例:

// 查询
var customers = _context.Customers.ToList();

// 转换为DTO
var customerDtos = customers.Select(c => new CustomerDto
{
    Id = c.Id,
    Name = c.Name,
    Email = c.Email
}).ToList();

在此示例中,我们首先查询了所有客户的列表。然后,我们使用 LINQ 选择要转换的属性,并在选择时创建了一个新的 'CustomerDto' 对象。最后,我们将所有 DTO 对象保存在一个列表中。

请注意,我们只选择了我们想要在 DTO 中公开的属性。这是因为我们不希望将整个数据库实体暴露给客户端,这可能会导致安全问题。

此外,我们还可以使用 'AutoMapper' 库来简化 DTO 转换过程。使用 'AutoMapper',我们可以将转换配置放在单独的类中,并使用它来自动转换实体对象。

以下是使用 'AutoMapper' 进行 DTO 转换的示例:

// 配置转换
var config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<Customer, CustomerDto>();
});

// 创建映射器
var mapper = config.CreateMapper();

// 查询
var customers = _context.Customers.ToList();

// 转换为DTO
var customerDtos = mapper.Map<List<CustomerDto>>(customers);

在此示例中,我们首先配置了一个映射器,并将其用于将 'Customer' 实体转换为 'CustomerDto' 对象。然后,我们查询所有客户,并使用映射器将其转换为 DTO。这样,我们就可以将 EF Core 查询结果转换为 DTO,而无需手动编写转换代码。

ASP.NET Core Web API:使用 EF Core 查询结果转 DTO

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

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