У меня есть пользовательское поле в моей таблице UserIdentity под названием «Имя».Поле Имя будет содержать имя пользователя, который зарегистрировался.
public class User : IdentityUser
{
public string Name { get; set; }
public bool CanNotify { get; set; }
}
У меня есть еще одна таблица с именем Post имеет поле "AuthorName"
public class Post
{
public Instant Published { get; set; }
public string Content { get; set; }
public Guid UserId { get; set; }
public string AuthorName { get; set; }
}
При создании / публикацииблог, я хочу, чтобы AuthorName был тем, кто вошел в систему, что означает, что AuthorName должен быть связан с именем из таблицы UserManager, который в настоящее время вошел в систему.
public async Task<IActionResult> OnPostAsync()
{
cmd = _mapper.Map(User, cmd);
}
public class Mapper : Profile
{
public Mapper()
{
CreateMap<ClaimsPrincipal, CreatePostCommand>(MemberList.None)
.ForMember(d => d.UserId, m => m.MapFrom(s =>
Guid.Parse(s.FindFirstValue(ClaimTypes.NameIdentifier))))
.ForMember(d => d.Name, m => m.MapFrom(s => s.Identity.AuthorName));
}
}
Над кодом работает нормально, но я нене хочу отображать имя личности, скорее оно должно отображаться из таблицы UserManager, я пробовал много логик, но не работал, позвольте мне вставить одну из них: -
CreateMap<ClaimsPrincipal, CreatePostCommand>(MemberList.Source)
.ForMember(d => d.UserId, m => m.MapFrom(s => Guid.Parse(s.FindFirstValue(ClaimTypes.NameIdentifier))))
.ForMember(d => d.Name, m => m.MapFrom(s => s.FindFirst(_userManager.GetUserAsync(User).Result.AuthorName)));
Но приведенные выше правила отображения даютme error
«Пользователь» - это тип, который недопустим в данном контексте