Tranzakciótámogatás

A LINQ–SQL három különböző tranzakciómodellt támogat. Az alábbi lista ezeket a modelleket az elvégzett ellenőrzések sorrendjében sorolja fel.

Explicit helyi tranzakció

Amikor SubmitChanges a rendszer meghívja, ha a Transaction tulajdonság (IDbTransaction) tranzakcióra van állítva, a SubmitChanges hívás ugyanazon tranzakció kontextusában lesz végrehajtva.

A tranzakció sikeres végrehajtása után az Ön felelőssége, hogy véglegesítse vagy visszaállítsa a tranzakciót. A tranzakciónak megfelelő kapcsolatnak meg kell egyeznie azzal a kapcsolattal, amelyet a DataContext összekapcsolásához használtak. A rendszer kivételt jelez, ha másik kapcsolatot használ.

Direkt megosztható tranzakció

LINQ to SQL API-kat meghívhat (beleértve, de nem kizárólag SubmitChanges) az aktív Transaction hatókörében. A LINQ to SQL észleli, hogy a hívás egy tranzakció hatókörébe tartozik, és nem hoz létre új tranzakciót. A LINQ és az SQL közötti kapcsolat ebben az esetben is elkerüli a kapcsolat bezárását. Egy ilyen tranzakció kontextusában lekérdezéseket és SubmitChanges végrehajtásokat hajthat végre.

Implicit tranzakció

Hívásakor SubmitChanges a LINQ to SQL ellenőrzi, hogy a hívás a Transaction hatókörébe tartozik-e, vagy a Transaction tulajdonság (IDbTransaction) felhasználó által indított helyi tranzakcióra van-e beállítva. Ha egyik tranzakciót sem találja, a LINQ–SQL elindít egy helyi tranzakciót (IDbTransaction), és a generált SQL-parancsok végrehajtására használja. Ha az összes SQL-parancs sikeresen befejeződött, a LINQ az SQL-nek véglegesíti a helyi tranzakciót, és visszaadja.

Lásd még