自动映射和EF导航属性

时间:2017-03-24 14:45:15

标签: asp.net-core asp.net-core-mvc entity-framework-core automapper-6

使用ASP.NET MVC Core和Entity Framework Core我试图创建一个简单的网站。

我已经定义了我的模型:

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

以及相应的View Models:

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

我已使用相应的映射器定义了自动映射配置文件:

    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)

造成撞车的原因是什么?

1 个答案:

答案 0 :(得分:1)

您无法执行此映射,因为它是循环的。您必须删除此行

public virtual ClubViewModel Club { get; set; }
来自TeamViewModel

,映射应按预期工作。