Con ASP.NET MVC Core e Entity Framework Core sto cercando di creare un sito Web semplice.
Ho definito il mio modello:
public class Club
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public virtual IEnumerable<Team> Teams { get; set; }
}
public class Team
{
[Key]
public int Id { get; set; }
public int ClubId { get; set; }
[MaxLength(32)]
public string Name { get; set; }
public virtual Club Club { get; set; }
}
Così come i corrispondenti modelli di vista:
public class ClubViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public virtual IEnumerable<TeamViewModel> Teams { get; set; }
}
public class TeamViewModel
{
public int Id { get; set; }
public int ClubId { get; set; }
public string Name { get; set; }
public virtual ClubViewModel Club { get; set; }
}
Ho definito un profilo Automapper con i corrispondenti mapper:
CreateMap<Club, ClubViewModel>();
CreateMap<ClubViewModel, Club>();
CreateMap<Team, TeamViewModel>();
CreateMap<TeamViewModel, Team>();
Provo a caricare un'entità Club
, con la proprietà di navigazione Teams
inclusa ( _context.Club.Include(c => c.Teams).ToList()
). Funziona come previsto, restituisce un club con una lista di squadre. Ma quando provo a mappare questa istanza su un ClubViewModel, ottengo un errore 502.3 e la mia sessione di debug termina immediatamente.
Sembra che mi manchi qualcosa di banale, ma semplicemente non lo vedo. Non ci sono informazioni nel registro eventi di Windows e non riesco a trovare alcuna informazione utile nella registrazione di IIS Express (% userprofile% \ documents \ IISExpress)
Qual è la causa dello schianto?
Non è possibile eseguire questa mappatura perché è circolare. Dovrai rimuovere questa linea
public virtual ClubViewModel Club { get; set; }
dal tuo TeamViewModel
e la mappatura dovrebbe funzionare come previsto.