Отношения «многие ко многим» в структуре сущностей вызывают бесконечный цикл - PullRequest
5 голосов
/ 28 февраля 2012

У меня есть модель данных в SQL Server, которая имеет отношение «многие ко многим».Когда Entity Framework моделирует это отношение, он делает это, создавая двустороннюю ссылку на список, подобную этой:

public class Class1
{
    public ICollection<Class2> Class2s {get;set;}
}

public class Class2
{
    public ICollection<Class1> Class1s {get;set;}
}

Теперь проблема в том, что в некоторых обстоятельствах (но не во всех) это, кажется, вызывает бесконечный цикл,У меня есть случай, когда я вызываю Add() в одной из коллекций, это заставляет платформу зацикливаться между методами get свойств обоих классов, эффективно перегружая весь процессор и замораживая приложение.

Кто-нибудь испытывал что-либо подобное?Что я могу сделать, чтобы предотвратить это?

PS: Я использую генератор генерации Mocking Framework Раба Халлетта для генерации кода.Не знаю, относится ли это к делу.

Обновление 1 : Это определенно связано с фальшивой структурой

Обновление 2 : Это не бесконечноцикл, но он обращается ко всем элементам из обеих таблиц - вероятно, вызывает n * m доступов.Я посмотрю больше на это и вернусь

1 Ответ

0 голосов
/ 17 марта 2012

Как вы говорите, бесконечный цикл есть только в некоторых случаях.Вероятно, это проблема с данными.

Если вы возьмете, например, что у class1 X есть 3 class2's A, B и C. Если у class2 A, в свою очередь, есть class1 из X, то у вас есть бесконечный цикл.

Я также столкнулся с этой проблемой при использовании Automapper.

Чтобы исправить это, вы можете:

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