在 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));
}