Próbuję dołączyć i dodać odłączone jednostki do kontekstu Entity Framework. Na przykład:

Mam encję Klient i właściwość nawigacji, aby szczegółowo opisać encję Zamówienie. Pomysł polega na pobraniu encji Klient i dokonaniu w niej modyfikacji, a następnie dodaniu nowych encji Zamówienie do encji Klient.

Problem zaczyna się, gdy próbuję Dołączyć (zakładam, że jest to właściwa metoda do użycia). Ponieważ cały wykres obiektu jest teraz dołączony, otrzymuję następujący błąd:

„Obiekt z tymczasową wartością EntityKey nie może być dołączony do kontekstu obiektu”.

Rozumiem, że błąd wynika z dodanych elementów Zamówienia, które należy Dodać, a nie Dołączone.

Czy istnieje sposób na dołączenie lub dodanie istniejącej jednostki z nowymi jednostkami podrzędnymi do kontekstu?

2
Reynier Booysen 21 luty 2012, 13:13

3 odpowiedzi

Najlepsza odpowiedź

Po kilku badaniach znalazłem obejście tego problemu:

Zamiast dołączać obiekt Klient z powrotem do kontekstu, dodaję teraz obiekt Klient do kontekstu, a następnie zmieniam stan obiektu na Zmodyfikowany .

Muszę skopiować obiekt Klient do nowego obiektu Klient, aby pozbyć się EntityKey (nie możesz dodać obiektu z EntityKey, musisz Dołączyć it), a następnie dodaj nowy obiekt Klient do kontekstu za pomocą metody AddObject.

To trochę brzydkie, ale działa. Jestem otwarty na wszelkie inne sugestie?

0
Reynier Booysen 23 luty 2012, 12:47

Jeśli chcesz używać Attach w ten sposób, nie powinieneś używać jednostek opartych na EntityObject - zamiast tego użyj POCO. W każdym razie nadal będziesz musiał przemierzyć graf całego obiektu i ustawić poprawny stan (zmodyfikowany, dodany, usunięty) dla każdej encji i niezależnej asocjacji. Na koniec dnia dołączanie wykresu odłączonego obiektu jest bardzo trudne nawet z POCO - najlepszym sposobem nie jest dołączanie wykresu, ale załadowanie tych samych danych z bazy danych i zsynchronizowanie odłączonego wykresu z załadowanym wykresem (musisz go zakodować samodzielnie).

2
Community 23 maj 2017, 15:03

Opisany przez Ciebie problem był również tematem mojego artykułu na CodeProject: Ponowne dołączanie Entity Graphs do Entity Framework .

Pamiętaj, że najnowszy kod jest dostępny na ef4tiers.codeplex.com.

0
Community 20 czerwiec 2020, 12:12