我有一个dotnet core web api
,它使用Repository Pattern
和AutoMapper
将资源映射到模型..,
这是InMemoryDatabase
的实现
如下所示,这是一种ProducRepository
使用EntityFramework Include()
方法来包含类别数据
public async Task<IEnumerable<Products>>ListAsync(){
return await _context.Products.Include(p=>p.Categories).ToListAsync();
}
我为HttpGet
实现类别服务,并准备在ProductController
中获取数据的方法,这里是get方法
[HttpGet]
public async Task<IEnumerable<ProductResource>>ListAsync(){
var products=await _ProductService.ListAsync();
var resource = _mapper.Map<IEnumerable<Products>,IEnumerable<ProductResource>>(products);
return resource;
}
在ProductResource
中,我以这种方式通过了CategoryResource
public class ProductResource
{
public int Id { get; set; }
public string Name { get; set; }
public int QuantityInPackage { get; set; }
public string UnitOfMeasurement { get; set; }
public CategoryResource categoryResource { get; set; }
}
这意味着当我运行产品Get Request
时,CategoryResource
必须在ProductResourse
旁边执行,但它会返回null
,就像这样
答案 0 :(得分:1)
这里的主要思想是product
和ProductResource
只是映射DescriptionAttribute
而不是包含
// Mapping Description Attribut
CreateMap<Products,ProductResource>()
.ForMember(src=>src.UnitOfMeasurement,
opt=>opt.MapFrom(src=>src.UnitOfMeasurement.ToDescriptionString()));
// Mapping Categories Table
CreateMap<Products,ProductResource>()
.ForMember(dto=>dto.Categories,
conf=>conf.MapFrom(p=>p.Categories));