我正在尝试映射一个列表模型对象,该对象具有引用父对象的子对象。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=>vm.EventElements,opt=>opt.MapFrom(src=>src.EventElements));
其次,为列表中的每个对象返回null:Mapper.CreateMap().MaxDepth(1);
如何在没有循环的情况下获取具有子级的事件数据?
您需要禁用DbContext中的代理创建,如下所示:
DbContext.Configuration.ProxyCreationEnabled = false;
并在存储库中使用"Include"lambda表达式
public IQueryable<Customer> GetAllCustomers()
{
return DbSet.AsQueryable().Include(s => s.StatusType).Include(s => s.CustomerCategory);
}