我发现很多帖子解释了如何解决我遇到的同样问题,但不是我的情况:
所以我有4个班级:
上下文类:Client
,Rerservation
。
其他课程:ClientDto
,ReservationDto
。
我添加了这一行来建立类之间的关系
Mapper.CreateMap<Client, ClientDto>();
Mapper.CreateMap<Reservation, ReservationDto>();
Mapper.CreateMap<ClientDto, Client>();
Mapper.CreateMap<ReservationDto, Reservation>();
客户DTO课程:
public class ClientDto
{
public int Id { get; set; }
...
public virtual ICollection<ReservationDto> Reservations { get; set; }
}
预订DTO classe:
public class ReservationDto
{
public int Id { get; set; }
...
public virtual ClientDto Client{ get; set; }
}
所以,当我想从数据库中获取客户列表时:
public IEnumerable<ClientDto> GetClients(Expression<Func<ClientDto, bool>> expression, int count)
{
return _context.Clients.Project().To<ClientDto>().Where(expression.Expand());
}
我收到此错误消息:
An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll
如果我从ClientDto classe删除预订关系,那就行了!
RelationShip:
答案 0 :(得分:2)
正如@Ben建议的那样,您有一个循环引用:ClientDto
包含ReservationDto
的集合,每个ClientDto
依次包含对其{{1}}所有者的反向引用。
您可以查看this question有关如何使用Automapper处理循环引用的一些想法。