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ć?