Automapper父子自引用循环

时间:2014-10-06 13:47:58

标签: c# automapper-3

我正在尝试使用引用父项的子项映射列表模型对象。 Json序列化会抛出“检测到自引用循环”错误消息。我的模型类:

public class Event
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<EventElement> EventElements { get; set; }
    ...
}

public class EventElement
{
    public int Id { get; set; }
    ...
    public int EventId { get; set; }
    public virtual Event Event { get; set; }
}

我在Automapper配置中尝试了一些技巧。首先,抛出相同的错误:     Mapper.CreateMap()                 .ForMember(vm =&gt; vm.EventElements,opt =&gt; opt.MapFrom(src =&gt; src.EventElements));

其次,为列表中的每个对象返回null:     。Mapper.CreateMap()MAXDEPTH(1);

如何在没有循环循环的情况下获得包含子项的事件数据?

1 个答案:

答案 0 :(得分:1)

您需要在DbContext中禁用代理创建,如下所示:

  DbContext.Configuration.ProxyCreationEnabled = false;

在存储库中使用“Include”lambda表达式

public IQueryable<Customer> GetAllCustomers()
    {
        return DbSet.AsQueryable().Include(s => s.StatusType).Include(s => s.CustomerCategory);
    }