从自动映射程序中的标识映射用户表 Asp.Net



在 Asp.Net Core 中,我覆盖了 IdentityUser 表以添加更多功能

public class Person : IdentityUser
{
public string Location {get; set; }
public SellerType SellerType{get; set; }
}
public enum SellerType 
{
PrivateSeller , 
Dealer
}

我还有一个ViewModel类CredentialModel,我正在使用AutoMapper将其与Person类链接在一起

public class CredentialModel
{
public string UserName { get; set; }
public string Password { get; set; }
public string FirstName {get;set;}
public string LastName {get; set; }
public string Location {get; set; }
public string SellerType{get; set; }
public string[] SellerTypes {get; set; }
public string PhoneNumber {get; set; }
}

和自动映射器配置文件类

public class UserMapProfile : Profile
{
public UserMapProfile(){
CreateMap<CarAdderUser, CredentialModel>()
.ForMember(model=> model.SellerType , 
opt=> opt.MapFrom(vm=>((SellerType)vm.SellerType).ToString()))
.ForMember(model=> model.SellerTypes, opt=> opt.UseValue(Enum.GetNames(typeof(SellerType)).ToArray()))
.ReverseMap();
}
}

我的问题出在控制器上

像这样它有效,但我返回的是实体而不是虚拟机

[HttpGet("getUser/{username}")]
public  IActionResult GetUser(string username)
{
var user= _userManager.FindByNameAsync(username);
return Ok(user);
}

像这样,它在邮差中扔给我一个 404

[HttpGet("getUser/{username}")]
public  IActionResult GetUser(string username)
{
var user= _userManager.FindByNameAsync(username);
return Ok(_mapper.Map<CredentialModel>(user));
}

IT 给我抛出一个错误

An unhandled exception has occurred: Missing type map configuration or unsupported mapping.
Mapping types:
Task`1 -> CredentialModel

不知道该怎么办...不是自动映射器专家

已解决...问题是我忘记了我只需要结果...... 所以用户。结果而不是用户在返回... 不知道其他事情是什么...它们不是数据库中用户表中的列

你不应该使用user.Result.这将阻止调用线程。请改用async/await

public async Task<IActionResult> GetUser(string username)
{
var user= await _userManager.FindByNameAsync(username);
return Ok(_mapper.Map<CredentialModel>(user));
}

最新更新