Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对象关系(EF4)导致的堆栈溢出异常_C#_Entity Framework_Stack Overflow - Fatal编程技术网

C# 对象关系(EF4)导致的堆栈溢出异常

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

我发现许多帖子都解释了如何解决我遇到的相同问题,但我的情况并非如此:

所以我有4门课:

上下文类:
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