C# 对象关系(EF4)导致的堆栈溢出异常
我发现许多帖子都解释了如何解决我遇到的相同问题,但我的情况并非如此: 所以我有4门课: 上下文类:C# 对象关系(EF4)导致的堆栈溢出异常,c#,entity-framework,stack-overflow,C#,Entity Framework,Stack Overflow,我发现许多帖子都解释了如何解决我遇到的相同问题,但我的情况并非如此: 所以我有4门课: 上下文类:Client,reservation。 其他类别:ClientDto,ReservationDto 我添加这一行是为了建立类之间的关系 Mapper.CreateMap<Client, ClientDto>(); Mapper.CreateMap<Reservation, ReservationDto>(); Mapper.CreateMap<ClientDto, Cl
Client
,reservation
。
其他类别:ClientDto
,ReservationDto
我添加这一行是为了建立类之间的关系
Mapper.CreateMap<Client, ClientDto>();
Mapper.CreateMap<Reservation, ReservationDto>();
Mapper.CreateMap<ClientDto, Client>();
Mapper.CreateMap<ReservationDto, Reservation>();
所以,当我想从数据库中获取客户端列表时:
public IEnumerable<ClientDto> GetClients(Expression<Func<ClientDto, bool>> expression, int count)
{
return _context.Clients.Project().To<ClientDto>().Where(expression.Expand());
}
如果我将预订关系从clientd删除到classe,那就没问题了强>
关系:
正如@Ben所建议的,您有一个循环引用:
ClientDto
包含一个ReservationDto
的集合,每个集合依次包含对其ClientDto
所有者的反向引用
您可以查看有关如何使用Automapper处理循环引用的一些想法。有关更多信息,请查看此问题。谢谢,但这无法解决我的问题。您的循环关系导致无限对象图,显然无法完全映射到DTO。您的DTO上是否同时需要
预订
和客户
,删除其中一个可以解决此问题。我检查了我的代码o,客户和预订之间只有一个关系请再次查看我的帖子我更改了它!如果我从保留中删除例如客户端对象,我将不会从保留对象中提取客户端
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