Obsługa transakcji
LINQ to SQL obsługuje trzy odrębne modele transakcji. Poniżej wymieniono te modele w kolejności przeprowadzania testów.
Jawna transakcja lokalna
Gdy SubmitChanges jest wywoływana, jeśli Transaction właściwość jest ustawiona na transakcję (IDbTransaction
), SubmitChanges wywołanie jest wykonywane w kontekście tej samej transakcji.
Użytkownik ponosi odpowiedzialność za zatwierdzenie lub wycofanie transakcji po pomyślnym wykonaniu transakcji. Połączenie odpowiadające transakcji musi być zgodne z połączeniem używanym do konstruowania .DataContext Wyjątek jest zgłaszany, jeśli jest używane inne połączenie.
Jawna transakcja dystrybucyjna
Możesz wywołać interfejsy API LINQ to SQL (w tym, ale nie tylko SubmitChanges) w zakresie aktywnego Transactionelementu . LINQ to SQL wykrywa, że wywołanie znajduje się w zakresie transakcji i nie tworzy nowej transakcji. LinQ to SQL również unika zamykania połączenia w tym przypadku. Zapytania i SubmitChanges wykonania można wykonywać w kontekście takiej transakcji.
Transakcja niejawna
Podczas wywoływania SubmitChangesmetody funkcja LINQ to SQL sprawdza, czy wywołanie znajduje się w zakresie Transaction elementu , czy właściwość Transaction
(IDbTransaction
) jest ustawiona na transakcję lokalną uruchomioną przez użytkownika. Jeśli nie znajdzie żadnej transakcji, LINQ to SQL uruchamia transakcję lokalną (IDbTransaction
) i używa jej do wykonywania wygenerowanych poleceń SQL. Po pomyślnym zakończeniu wszystkich poleceń SQL linQ to SQL zatwierdza transakcję lokalną i zwraca.