asp.net-core - Automapper 和 EF 导航属性

标签 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 模型:

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 错误,并且我的调试 session 立即结束。

似乎我错过了一些微不足道的东西,但我根本没有看到它。 Windows 事件日志中没有任何信息,并且我在 IIS Express 日志记录 (%userprofile%\documents\IISExpress) 中找不到任何有用的信息

导致崩溃的原因是什么?

最佳答案

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

public virtual ClubViewModel Club { get; set; }

来自您的 TeamViewModel 并且映射应该按预期工作。

关于asp.net-core - Automapper 和 EF 导航属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43002468/

相关文章:

c# - Controller 操作错误地返回状态代码 200 而不是 204

asp.net-core - 相对页面路径 'About' 只能在执行 Razor 页面时使用。指定一个

c# - mvc 编码/解码查询字符串

c# - 将多个来源合并到一个目的地

c# - .NET Core Web API 中的 OData 列表/字典序列化

c# - 在 EF Core 中设置属性约定?

c# - EF Core/DbContext > 将自定义类型映射为主键

unit-testing - 在 EF 7.0(内存中)中使用数据注释或 fluent api 验证实体

Azure Web应用程序 "Couldn'找不到有效的证书”

c# - 内存数据库不保存数据