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ć ApplicationUser od Artist z 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ć?