0

ASP.NET MVCコアとEntity Frameworkコアを使用して、簡単なWebサイトを作成しようとしています。AutomapperとEFのナビゲーションプロパティ

私は私のモデルを定義しました:

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

ならびに対応するビューモデル:

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

私は、対応するマッパーとAutomapperプロファイルを定義した:

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

Clubエンティティをロードしようとしました。ナビゲーションプロパティTeamsが含まれている(_context.Club.Include(c => c.Teams).ToList())。これは期待通りに機能し、チームのリストを含むクラブを返します。しかし、このインスタンスをClubViewModelにマッピングしようとすると、502.3エラーが発生し、すぐにデバッグセッションが終了します。

私は何かが些細なものを見逃しているようですが、私はそれを単に見ません。 Windowsイベントログに情報がなく、IIS Expressのログ(%userprofile%\ documents \ IISExpress)に役立つ情報が見つかりません

クラッシュの原因は何ですか?

+0

この行 '_context.Club.Include(c => c.Teams).ToList()'はAutomapperとは何の関係もありません。この行を 'try/catch'文の中に入れて例外が何であるかを見てください。 –

+0

この行は、Teamsプロパティが設定されたClubインスタンスを返します。 IMapper.Map (club_instance)を使用して、インスタンスをClubViewModelインスタンスにマップしようとしました。例外は検出されず、デバッグセッションは単に終了します – Rhapsody

+1

[循環参照](https://github.com/AutoMapper/AutoMapper/wiki/5.0-Upgrade-Guide#circular-references)のようなサウンドです。 –

答えて

0

このマッピングは円形なので実行できません。この行を削除する必要があります

public virtual ClubViewModel Club { get; set; } 

あなたのTeamViewModelからマッピングが期待通りに機能するはずです。

+0

あなたは正しいです。そのプロパティを削除することは実際に機能します。ありがとう! – Rhapsody

関連する問題