Podpora transakcí
LINQ to SQL podporuje tři různé transakční modely. Následující modely jsou uvedeny v pořadí provedených kontrol.
Explicitní místní transakce
Při SubmitChanges volání, pokud Transaction je vlastnost nastavena na (IDbTransaction
) transakce, SubmitChanges volání se provede v kontextu stejné transakce.
Je vaší zodpovědností potvrdit nebo vrátit transakci po úspěšném provedení transakce. Připojení odpovídající transakci se musí shodovat s připojením použitým k vytvoření DataContext. Pokud se použije jiné připojení, vyvolá se výjimka.
Explicitní distribuovatelná transakce
LinQ to SQL API můžete volat (včetně mimo jiné SubmitChanges) v oboru aktivní Transaction. LINQ to SQL zjistí, že volání je v oboru transakce a nevytvoří novou transakci. LINQ to SQL také zabraňuje zavření připojení v tomto případě. V kontextu takové transakce můžete provádět dotazy a SubmitChanges provádění.
Implicitní transakce
Při volání SubmitChanges, LINQ to SQL zkontroluje, zda je volání v oboru nebo Transaction pokud Transaction
je vlastnost (IDbTransaction
) nastavena na uživatelem spuštěné místní transakce. Pokud nenajde žádnou transakci, LINQ to SQL spustí místní transakci (IDbTransaction
) a použije ji ke spuštění vygenerovaných příkazů SQL. Jakmile jsou všechny příkazy SQL úspěšně dokončeny, LINQ to SQL potvrdí místní transakci a vrátí.