Entity Framework może działać bardzo wolno przy masowych operacjach wstawiania/aktualizacji/usuwania. Nawet często sugerowane poprawki do wyłączania AutoDetectChanges i/lub ValidateOnSaveEnabled nie zawsze pomagają.Czy istnieje niekomercyjna alternatywa dla Z.EntityFramework.Extensions?
Natknąłem się na Z.EntityFramework.Extensions na NuGet, ale wydaje się, że jest to produkt komercyjny, który działa tylko przez pewien okres czasu.
https://www.nuget.org/packages/Z.EntityFramework.Extensions/
tej pory tak naprawdę wystarczy BulkInsert(), BulkUpdate() i BulkDelete().
Moje pytanie brzmi:
Czy istnieje niezawodny biblioteka niekomercyjnym, że ma prawie taki sam jak Z.EntityFramework.Extensions?
Dzięki za wszelkie wskazówki!
do aktualizacji i usuwania wsadowym można użyć https: // github .com/loresoft/EntityFramework.Extended. W przypadku wsadu wsadowego - wystarczy utworzyć nowy kontekst co 100 elementów. Stwórz więc kontekst, wstaw 100, zapisz zmiany. Następnie utwórz nowy, włóż następne 100, zapisz zmiany itp. Zawiń wszystko w zakresie transakcji. To nie jest tak naprawdę wstawianie wsadowe, ale będzie znacznie szybsze niż wstawianie wszystkich obiektów w tej samej instancji kontekstu. – Evk
ORMy na ogół * NIE * nadają się do operacji wsadowych, znacznie mniej wkładek luzem. To tak, jakby za pomocą pincety transportować ciężarówkę kamyków. Nie można tego ukryć żadnym rozszerzeniem. Najlepszą opcją dla insertów masowych jest użycie SqlBulkCopy do wykonania * rzeczywistej *, minimalnie zarejestrowanej operacji przesyłania strumieniowego luzem. Jeśli chcesz wykonywać aktualizacje zbiorcze, po prostu użyj odpowiedniej instrukcji UPDATE.Jeśli chcesz * UPSERT * ze źródeł zewnętrznych, zaimportuj wszystko do tabeli pomostowej i użyj polecenia MERGE, aby zaktualizować tabelę docelową. –
Innymi słowy, szukasz czegoś, co może przekonwertować niewiarygodny, niebezpieczny, niemożliwy do skalowania proces jeden. Dlaczego nie skorzystać z niezawodnego, skalowalnego procesu od samego początku? –