Czy ktoś ma jakieś dobre informacje na temat użycia metody .SaveChanges()?Jaki jest najlepszy sposób użycia metody .SaveChanges() w usługach danych ADO.Net?
Występują różne problemy podczas próby użycia metody .SaveChanges() w moim obiekcie kontekstu danych. Pobieram dane z istniejącego źródła danych, tworząc odpowiednie obiekty EntityFramework/DataService, zapełniając te utworzone obiekty danymi, dodając te obiekty do kontekstu, a następnie zapisując te dane, wywołując .SaveChanges.
Scenariusze, które wymyśliłem (i związane z nimi problemy) są jako takie ... W każdym scenariuszu mam pętlę foreach, która pobiera dane z wierszy w tabeli DataTable i generuje obiekty, dołączając je do kontekstu, kiedy idą. (uwaga: trzy obiekty to "członek" i dwa "adresy", które są dołączone za pośrednictwem wywołania SetLink) - w zasadzie jest to narzędzie do konwersji, które pobiera dane z jednego magazynu danych i masuje je do magazynu danych, który jest udostępniany przez usługi danych.
- .SaveChanges call() bez parametrów raz na koniec pętli foreach (czyli poza pętlą)
- OutOfMemory błąd o 1/3 sposób (30,000 poza 90,000 zbawia) - nie wiesz, jak to się dzieje, ponieważ każdy element składowy jest oddzielnym wywołaniem SQL w bazie danych, na którym kończy się pamięć?
- .SaveChanges call() bez parametrów raz na pętli
- To działa, ale zajmuje absolutnie zawsze (8 godzin) dla 90,000 zapisuje
- połączeń .SaveChanges (SaveChangesOption.Batch) raz na koniec pętli foreach
- sam błąd OutOfMemory, ale bez zapisuje do bazy
- połączeń .SaveChanges (SaveChangesOption.Batch) raz na pętli
- 404 nie znaleziono błąd
- połączeń .SaveChanges (SaveChangesOption.Batch) raz na 10 pętlach
- 400 błędu Bad Request (okazjonalnie)
- OutOfMemory po wielu iteracjach
- Liczba losowych prób utworzenia kontekstu raz na pętlę lub zmienna na początku pętli lub dostępna jako prywatna zmienna składowa.
- wyniki Odmienne, nie mogąc oszacować, że nikt naprawdę dobry
Jaka jest preferowana metoda wywoływania .SaveChanges() z obiektu klienta, kiedy robi duże obciążenie danych takiego? Czy jest coś, czego nie rozumiem w jaki sposób .SaveChanges() działa? Czy ktokolwiek może podać więcej szczegółów na temat tego, jak należy korzystać z tej funkcji i jakie (jeśli są) ograniczenia w zapisywaniu danych za pośrednictwem usług danych?Czy istnieją jakieś najlepsze praktyki dotyczące wywołania metody .SaveChanges()? Czy jest jakaś szczególnie dobra dokumentacja wywołania metody .SaveChanges()?
jakie "zmiany" wprowadzasz? Dlaczego 90 000 oszczędza? Może powinieneś wypróbować replikację SQL, jeśli tylko przekazujesz dane? tylko myśl. – D3vtr0n
żeby wyjaśnić, kiedy mówisz "raz na pętlę", masz na myśli jedno połączenie na pętlę * iteracja *? – Veverke