0

Mit ASP.NET MVC Core und Entity Framework Core versuche ich eine einfache Website zu erstellen.Automapper und EF Navigation Eigenschaften

Ich habe mein Modell definiert:

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; } 
} 

Neben den entsprechenden Ansicht Modelle:

CreateMap<Club, ClubViewModel>(); 
    CreateMap<ClubViewModel, Club>(); 
    CreateMap<Team, TeamViewModel>(); 
    CreateMap<TeamViewModel, Team>(); 
:

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; } 
} 

ich ein AutoMapper Profil mit den entsprechenden Mapper definiert haben

Ich versuche, eine Club Einheit mit der Navigationseigenschaft Teams in zu laden eingeschlossen (_context.Club.Include(c => c.Teams).ToList()). Dies funktioniert wie erwartet, es gibt einen Club mit einer Liste von Teams. Aber wenn ich versuche, diese Instanz einem ClubViewModel zuzuordnen, bekomme ich einen 502.3 Fehler und meine Debugsitzung wird sofort beendet.

Es scheint, als ob ich etwas Triviales vermisse, aber ich sehe es einfach nicht. Es gibt keine Informationen im Windows-Ereignisprotokoll und ich kann keine nützlichen Informationen in der IIS Express-Protokollierung finden (% userprofile% \ documents \ IISExpress)

Was verursacht den Absturz?

+0

diese Zeile '_context.Club.Include (c => c.Teams) .ToList()' hat nichts mit Automapper zu tun, setzen Sie diese Zeile in 'try/catch'-Anweisung und sehen Sie, was die Ausnahme ist. –

+0

Diese Zeile gibt eine Club-Instanz mit der Eigenschaft Teams zurück. Wenn ich versuche, die Instanz mithilfe von IMapper.Map (club_instance) einer ClubViewModel-Instanz zuzuordnen; Keine Ausnahme wird abgefangen, die Debugsitzung endet einfach – Rhapsody

+1

Klingt wie [Zirkelverweis] (https://github.com/AutoMapper/AutoMapper/wiki/5.0-Upgrade-Guide#circular-references) Problem. –

Antwort

0

Sie können diese Zuordnung nicht durchführen, da sie zirkulär ist. Sie müssen diese Zeile

public virtual ClubViewModel Club { get; set; } 

von Ihrem TeamViewModel entfernen und das Mapping sollte wie erwartet funktionieren.

+0

Sie haben Recht. Das Entfernen dieser Eigenschaft funktioniert in der Tat. Vielen Dank! – Rhapsody

Verwandte Themen