使用AutoMapper将IdentityUser映射到具体类

时间:2017-06-07 11:37:54

标签: entity-framework asp.net-core asp.net-identity

我有一个简单的AspNetCore Web Api,包含2个实体,一个Product和一个派生自IdentityUser的人员

public class Product 
{
 public int Id {get;set;}
public string Name {get; set;}
public Person Person {get; set; }
} 
public class Person : IdentityUser
{
public string FirstName {get; set;}
}

ViewModel和AutoMapper个人资料

public class ProductVM
{
 public string Name {get; set;}
 public string PersonWhoAdded {get;set;}
}
public class ProductProfile : Profile 


{
      public ProductProfile()
      {
       CreateMap<Product, ProductVM>()
        .ForMember(p=> PersonWhoAdded , opt.MapFrom(model=>model.Person.FirstName)).ReverseMap();
      }}

这是我的回购

`public class ProductRepo: IProductRepo
{
   public IEnumerable<Product> GetProducts()
    {
      return context.ProductSet.Include(p=> p.Person).ToList(); 
    }
}`

我的控制器

  [Route("api/[controller]")
public class ProductController: Controller
   { 
      IMapper _mapper;
       ctor(mapper){
        _mapper=mapper;  
        }
      [HttpGet]
      public IActionResult Get()
      {
        IEnumerable<Product> _products = _repo.GetProducts();
        // omitted Status codes for simplicity
        return Ok(_mapper.Map<IEnumerable<ProductVM>>(_products);

      }
   }

问题是它在personWhoAdded上显示null而不是FirstName    我可以在注册和登录后通过身份验证并从不同用户进行推送,但如果我想要列出产品和用户的firstName,它会显示null ... 也许有不同的方法,但我不是专家,所以任何帮助都可以 感谢

0 个答案:

没有答案