C# 具有实体框架核心递归问题的Automapper

C# 具有实体框架核心递归问题的Automapper,c#,entity-framework-core,automapper,C#,Entity Framework Core,Automapper,我与EF Core 2.x有多对多关系 我创建了3个类: public class Place { public string Name {get; set;} public int Id {get; set;} public ICollection<PlaceUser> Users {get; set;} } public class User { public string Name {get; set;} public int Id {get;

我与EF Core 2.x有多对多关系

我创建了3个类:

public class Place
{
   public string Name {get; set;}
   public int Id {get; set;}
   public ICollection<PlaceUser> Users {get; set;}
}

public class User
{
   public string Name {get; set;}
   public int Id {get; set;}
   public ICollection<PlaceUser> Places {get; set;}
}

public class PlaceUser
{
   public int UserId{get; set;}
   public User User{get; set;}
   public int PlaceId{get; set;}
   public Place Place{get; set;}
}

public class PlaceDto
{
   public string Name {get; set;}
   public int Id {get; set;}
   public ICollection<PlaceUserDto> Users {get; set;}
}
我尝试在我的映射器配置中使用深度,但它不起作用

我发现的唯一解决办法是:

if(place!=null && place.Users!=null)
{  // I set all the place.Users[i].Place = null; and place.Users[i].User=null;}
但这是一个丑陋的解决方案,一点也不方便

那么我可以使用哪种解决方案呢

谢谢

我添加了自动映射配置:

configuration.CreateMap<Place, PlaceDto>().MaxDepth(1); 
configuration.CreateMap().MaxDepth(1);


CreateMap().preserverences()

请显示您如何使用automapper的代码。ProjectTo?这根本不支持递归——很遗憾。隐藏在文档中,我知道。当然你有递归。Placeuser在place中,place在Placeuser中。我不是一个专家,但是试着把虚拟的东西放在他们面前,就像所有的例子一样。Virtual仅在需要时加载数据。请将您的问题包含为的源代码,这些源代码可以由其他人编译和测试。
ProjectTo
的主要用例是EF6。因此,一般来说,
ProjectTo
支持EF6所支持的功能。EF Core是一个完全不同的beast。我添加了我使用的automapper配置我需要PlaceUser的值一次。那么,对于次级级别,我不再需要了。在你的命题中,它将在第一级placeuser设置为空。@dalton5更改了我的答案。试着用它,什么都不管用。我试了所有的。在多对多efcore实体中,我递归地重复和加载所有实体。我不能改变他们。。
configuration.CreateMap<Place, PlaceDto>().MaxDepth(1);