2015-01-24 2 views
0

Я получаю странную ошибку при попытке сохранить объект с удаленным списком под-объектов с использованием Entity Framework.Entity Framework сохраняет ошибку при удалении элементов списка.

В частности, у меня есть список объектов типа 'a'. Эти объекты соединяются друг с другом через объект соединения типа «b». Объект «a» может содержать множество объектов «b», и каждый объект «b» содержит только один объект «a». Таким образом, в основном у меня есть сеть «a» объектов с 0 или более соединениями с другими объектами «a» через объекты «b».

Указанный список объектов 'b' объекта является переменной; Объекты 'b' могут быть добавлены или удалены из списка объектов 'a'. Однако, когда объект 'b' удаляется из списка объектов 'a', это иногда заставляет Entity Framework выходить из строя при попытке сохранить сеть объектов 'a' позже в строке. Код «б» удаление объекта «а» объекта выглядит следующим образом:

public void RemoveConnection(b connectionObject) 
    { 
     myBObjects.remove(connectionObject); 
    } 

Этот метод хорошо работает, когда код выполняется, и «а» объекты имеют правильный список «б» объекты в экономии времени , Ниже приведен код сохранения:

using (var db = new PersistenceContext()) 
      { 
       db.NetworkOfAs.Add(network); 
       db.SaveChanges(); 
      } 

Если «б» объект никогда не был удален из списка давал «A» объекта из «B» объектов, указанных работ просто отлично. Если объект 'b' удален из списка объектов 'a' объекта 'b', но список объектов 'b' остается больше или равен длине 1, то это также отлично работает. Однако, если объект 'b' был добавлен, а затем удален из списка объектов 'a' объекта 'b', так что список объектов 'a' объекта 'b' возвращается к длине 0, я получаю следующую ошибку:

The INSERT statement conflicted with the FOREIGN KEY constraint 
"FK_dbo.BObjects_dbo.AObjects_Id". The conflict occurred in database 
"NetworkDatabase.PersistenceContext\", table \"dbo.AObjects\", column 'Id' 

Я копал в отладке это уже несколько дней, и, кажется, довольно очевидно, что это была вызвана Entity Framework пытается сохранить «B» объекты, которые были удалены из заданного «а» Список объектов 'b'. Однако я не знаю, как предотвратить это, и не может найти ничего, описывающего эту конкретную проблему.

Любая помощь очень ценится, и если в этом объяснении отсутствуют какие-либо необходимые детали, пожалуйста, дайте мне знать.

ответ

0

За исключением того, что вы выставили, я бы сказал, что есть объекты B, которые были сохранены в Db, а затем вы просто удаляете ссылку, которую они имеют для объекта A, и фактически не удаляете объект самостоятельно. Таким образом, без ссылки, он конфликтует с внешним ключом для объектов B.