Automapper с рекурсивной проблемой Entity Framework Core - PullRequest
0 голосов
/ 07 марта 2020

У меня есть отношения многие ко многим с 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;}
}

В моем dbcontext я настроил отношения. Все работает хорошо.

Но когда я хочу сопоставить свое Dto Place с моим Place Object в моем объектном месте, у меня возникает исключение рекурсивности и переполнения:

У меня есть:

Place

|-> Users

      |-> User

      |-> Place

        |-> Users

          |-> ...

Я попытался в своей конфигурации mapper использовать глубину, но она не работает.

Единственный найденный мной обходной путь:

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); 

1 Ответ

0 голосов
/ 07 марта 2020

{ ссылка }

{ ссылка }

CreateMap<Foo, Bar>().PreserveReferences();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...