Innymi słowy, jeśli pobieram encje, a następnie pozbywam się mojego ObjectContext, czy muszę jawnie odłączyć wszystkie moje jednostki?Jeśli usuwam mój ObjectContext, czy moje jednostki są odłączone?
Odpowiedz
Twoje jednostki są odłączane po usunięciu kontekstu. Zobacz następujący wpis:
No nie trzeba zadzwonić odłączyć na swoich jednostkach. Jeśli jednak zrobić coś takiego:
var people = Context.Person.Where(p => p.FirstName == "John");
a następnie wyrzucać kontekście, ludzie będą wyrzucać wyjątek, ponieważ IEnumerable wstrzymuje wykonanie. W ten sposób:
var people = Context.Person.Where(p => p.FirstName == "John").ToList();
pozwoli Ci nadal korzystać z listy osób.
Ponadto
var john = Context.Person.FirstOrDefault(p => p.Id == 342);
będzie działać po kontekście jest umieszczona, bo już pobrane konkretny podmiot, a nie wyliczenie.
Być może zależy to od znaczenia Detach
. Dołączony byt oznacza, że kontekst wie o encji i śledzi jej zmiany. Jeśli pozbędziesz się kontekstu, nie będzie on już mógł śledzić zmian, a obiekt jest odwrócony. Podobno ma tutaj prawdziwe znaczenie.
Jeśli używasz dynamicznych serwerów proxy (POCO - dynamiczne śledzenie zmian lub leniwy ładunek), serwer proxy przechowuje wewnętrznie zwrotne odniesienie do kontekstu, ale nie reaguje na usuwanie kontekstu. Nadal utrzymuje odniesienie (przy okazji może to być źródłem nieprzyjemnych wycieków pamięci). Powoduje to problem w dwóch sytuacjach:
- Przy próbie dołączenia takiego obiektu do innego kontekstu spowoduje to pewien wyjątek, że obiekt może być śledzony tylko przez pojedynczy kontekst (pomimo faktu, że oryginalny kontekst jest już martwy).
- Przy próbie dostępu do właściwości nawigacji, która nie była zbytnio obciążona, otrzymasz
ObjectDisposedException
, ponieważ proxy uruchomi leniwy ładunek w usuniętym kontekście.
Jedynym sposobem na uniknięcie tego jest wyłączenie dynamicznych serwerów proxy lub ręczne odłączenie obiektu przed wyrzuceniem kontekstu. Ma to inną wadę - odłączający się podmiot zrywa relacje.
- 1. Czy funkcje obiektu DbContext są niedostępne w ObjectContext?
- 2. ObjectContext ConnectionString Sqlite
- 3. Pobierz DBContext z ObjectContext
- 4. Utrzymują moje crona i wykonać je nawet jeśli mój serwer węzeł wznowiona
- 5. Czy oczekiwania są niepotrzebne, jeśli w moim teście są weryfikacje?
- 6. Urządzenie Android LogCat zostało odłączone
- 7. Jakie są jednostki FB.getAuthResponse(). ExpiresIn?
- 8. Moje granice nie są wyrównane?
- 9. Gdzie są moje rubinowe klejnoty?
- 10. Dlaczego moje testy szyn są tak powolne?
- 11. Gdzie są moje pliki bazy danych H2?
- 12. Czy muszę odłączyć zdarzenia w jQuery, gdy usuwam elementy
- 13. DaoException: Entity jest odłączone od kontekstu DAO
- 14. Moje widoki są resetowane przy zmianie orientacji
- 15. Jak uzyskać odłączone repozytorium działające
- 16. Prevent CollapsingToolbarLayout upadek jeśli nie są potrzebne
- 17. Kiedy usuwam wiersze w Cassanderze, usuwam tylko kolumny, a nie klucze wierszy.
- 18. Jeśli dwie rzeczy nie są równe, czy są równe?
- 19. Dlaczego mój tablesorter nadal buforuje moje stare wiersze?
- 20. XCode - Ale ... Gdzie są moje archiwa?
- 21. Dlaczego usuwam element z niewłaściwej tablicy ArrayList?
- 22. Gniazda Java i odłączone połączenia
- 23. Dlaczego mój ObjectContext jest pusty podczas debugowania pliku dll vb 6 dla klasycznej strony asp IIS6?
- 24. Dlaczego moje "jeśli" nie wydaje się uruchomić?
- 25. Jakie jednostki są dozwolone w google.maps.Size?
- 26. Jak skompilować i uruchomić moje testy jednostki Mave dla Java 8, podczas gdy mój kod skompilowany dla Javy 7
- 27. Czy mogę podpisać moje pliki DLL?
- 28. Entity Framework ObjectContext ponowne wykorzystanie
- 29. Jak utworzyć Entity Framework ObjectContext?
- 30. Dlaczego moje widoki nie są rysowane?
http://stackoverflow.com/questions/2244843/entity-framework-detaching-entities-when-objectcontext-disposed sugeruje, że musisz odłączyć? Czy to nie jest poprawne? – glosrob