В настоящее время я разрабатываю приложение, в котором возникает исключение «В наборе изменений был обнаружен цикл» при вызове DataContext.SubmitChanges(). Я знаю, почему возникает это исключение, но я не смог найти решение для своей ситуации. Позвольте мне объяснить ситуацию. У меня есть база данных с таблицей, как показано ниже, к которой я обращаюсь с помощью LINQ to SQL, поэтому она сопоставляется с классами в vb.net.
Device
-------
ID
DefaultGatewayID
DefaultGatewayID — это Устройство, которое может быть тем же самым объектом или другим Устройством. Пользователь использует графический интерфейс с DataGrid для изменения и добавления новых записей. Обновление записей не проблема. Идентификатор уже существует, и DefaultGatewayObject прикреплен к записи (идентификатор хранится в базе данных).
Однако, когда я пытаюсь добавить новую запись и установить DefaultGatewayObject в той же транзакции, я получаю исключение «Цикл, обнаруженный в наборе изменений». Я подозреваю, что это вызвано LINQ to SQL, потому что он не знает, какую запись добавить первой, хотя в данном случае это один и тот же элемент.
У меня нет возможности разбить вставку на две части, одну для устройства, а затем добавить DefaultGateway, потому что моя кнопка отправки привязана к команде XAML, которая выполняет SubmitChanges.
В идеале у меня была бы возможность указать, какой объект должен быть создан первым, или что-то в этом роде. Я думаю, что это вариант удалить соединение с самим собой и просто установить идентификатор в этом поле, но я бы предпочел найти исправление в LINQ to SQL.
Я надеюсь, что у SO есть ответ на этот вопрос. Я мог найти только этот связанный пост a-circularly-lin">"Обнаружен цикл при добавлении циклически связанного списка"