Posiadać typowy zestaw danych z wieloma powiązanymi tabelami i relacjami zdefiniowanymi między tymi tabelami. Podczas przetwarzania danych, dodawam, modyfikuję i usuwam rekordy, a następnie wywołuję aktualizację w każdej tabeli.Transakcje w typowych zestawach danych
Requests Reapprovals UserRole
RequestId ----- RequestId ----- RoleId
Reason RoleId ----/ UserId
Powodem użyciu wpisywanych zestawu danych jest to, że muszę sprawdzić istniejące dane w celu ustalenia, czy Dodaję, modyfikowania lub usuwania rekordów ... więc muszę pełny zrzut wszystkim pracuję z (alternatywą byłoby 10 000 zapytań w bazie danych, ponieważ przetwarzam rekordy jeden po drugim).
Chcę obsługi transakcyjnej, ale nie widzę sposobu, aby to zrobić z wpisanymi zestawami danych. Na przykład, tworzę nową prośbę, gdy tworzę nowe ponowne zatwierdzenie. Ale jeśli ponowne zatwierdzenie nie powiedzie się, nie chcę zachować żądania.
Umieszczenie wywołań aktualizacji pod numerem TransactionScope
oznaczałoby, że jeśli jakiś rekord się nie powiedzie, wszystkie zawiodą. Nie tego chcę.
Jak mogę zatwierdzić lub wycofać powiązane wiersze we wpisanym zestawie danych?
To może Cię zainteresować wiedzieć, że nazywając Aktualizacja na stole ma rzeczywiście wysyłać zapytania do bazy N, jeden dla każdego rekordu, który aktualizujesz/dodawania/usuwanie. Nie zyskujesz więc wiele korzyści przez wywoływanie aktualizacji na stole lub wywoływanie aktualizacji za każdym razem, gdy zmieniasz pojedynczy wiersz. (Mogą wystąpić pewne korzyści przy korzystaniu z opcji wysyłania zbiorczego, ale nie wiem, jak duży) Więc chociaż rzeczywiście możesz użyć swojego pełnego zrzutu pamięci do określenia, które rekordy do modyfikacji, proponuję zawrzeć każdą serię działań dla rekordu we własnym zakresie transakcji. – Pandincus
Zauważyłem, że wiersze aktualizują się jeden po drugim, i rozważałem aktualizowanie wierszy pojedynczo podczas ich modyfikowania ... rzeczą, która nękała mnie, było to, że nazwałem Update() na stole, który sprawdza każdy wiersz, aby sprawdzić, czy potrzebuje aktualizacji. Oznacza to, że powtarzam 10 000 wierszy ponad 10 000 razy, aby znaleźć jeden wiersz, który został zaktualizowany. Nie byłeś pewien, czy ten wynik wydajności byłby ogromny czy nieistotny. –
Pandincus> Jeśli chcesz wprowadzić to, co mówisz, jako odpowiedź, zaakceptuję to. Wygląda na to, że albo wybiorę działanie, robiąc to, co sugerujesz, albo zaakceptuj/odrzucisz zmiany w zestawie danych jako całość: (Dzięki! –