ASP.NET Core Web API:使用 EF Core 查询结果转 DTO
在使用 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,而无需手动编写转换代码。
原文地址: https://www.cveoy.top/t/topic/lC9B 著作权归作者所有。请勿转载和采集!