Mam taki problem, posiadam w aplikacji dwa DbContexty. ConcertsContext, gdzie przechowuję dane związane z domeną i IdentityContext, domyślny z Asp Identity. Teraz chcę oddzielić ApplicationUserod Artistz domeny.

public class Artist
{
    public string Id { get; set; } // id z ApplicationUser
    public string Name { get; set; }
}

public async Task<IActionResult> Register(RegisterViewModel viewModel)
{
    if (!ModelState.IsValid)
        return View(viewModel);

    var user = new ApplicationUser
    {
        UserName = viewModel.Email,
        Email = viewModel.Email
    };

    var identityResult = await _userManager.CreateAsync(user, viewModel.Password);
    if (!identityResult.Succeeded)
    {
        foreach (var error in identityResult.Errors)
            ModelState.AddModelError(error.Code, error.Description);

        return View(viewModel);
    }

    var registeredUser = await _userManager.FindByEmailAsync(viewModel.Email);
    var artist = new Artist { Id = registeredUser.Id, Name = viewModel.UserName };
    _context.Artists.Add(artist);
    _context.SaveChanges();

    return RedirectToAction("Login");
}

Zrobiłem coś takiego, jeśli powiedzie się proces rejestracji w Asp Identity to pobieram Id zarejestrowanego użytkownika i tworzę obiekt Artist na tej podstawie. Teraz w klasach, które potrzebują artysty tworzę dwie właściwości string ArtistId, Artist Artist. W domenie pracuję cały czas z artystą, który nie ma masy zbędnych pól. Ostatecznie chcę przenieść tworzenie artysty do innego kontrolera bo teraz łamię SRP i po wykonaniu rejestracji wywołać przekierowanie np. return RedirectToAction("CreateArtist", "Artists");

Jak to wygląda w waszej strony czy dobrze kombinuję czy to code smell? Może ktoś ma jakieś inne pomysły jak to zrobić?