如何解决EF核心:外键返回空值:存储库模式
我有一个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
,就像这样
解决方法
这里的主要思想是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));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。