Transactieondersteuning
LINQ naar SQL ondersteunt drie afzonderlijke transactiemodellen. Hieronder worden deze modellen weergegeven in de volgorde van uitgevoerde controles.
Expliciete lokale transactie
Als SubmitChanges de Transaction eigenschap wordt aangeroepen op een (IDbTransaction
) transactie, wordt de SubmitChanges aanroep uitgevoerd in de context van dezelfde transactie.
Het is uw verantwoordelijkheid om de transactie vast te leggen of terug te draaien na een geslaagde uitvoering van de transactie. De verbinding die overeenkomt met de transactie moet overeenkomen met de verbinding die wordt gebruikt voor het maken van de DataContext. Er wordt een uitzondering gegenereerd als er een andere verbinding wordt gebruikt.
Expliciete distribueerbare transactie
U kunt LINQ aanroepen naar SQL-API's (inclusief maar niet beperkt tot SubmitChanges) in het bereik van een actief Transaction. LINQ naar SQL detecteert dat de aanroep binnen het bereik van een transactie valt en maakt geen nieuwe transactie. LINQ naar SQL voorkomt ook dat de verbinding in dit geval wordt gesloten. U kunt query's en SubmitChanges uitvoeringen uitvoeren in de context van een dergelijke transactie.
Impliciete transactie
Wanneer u LINQ aanroept SubmitChanges, controleert LINQ naar SQL of de aanroep binnen het bereik van een Transaction of als de Transaction
eigenschap (IDbTransaction
) is ingesteld op een door de gebruiker gestarte lokale transactie. Als er geen van beide transacties wordt gevonden, start LINQ naar SQL een lokale transactie (IDbTransaction
) en gebruikt deze om de gegenereerde SQL-opdrachten uit te voeren. Wanneer alle SQL-opdrachten zijn voltooid, voert LINQ naar SQL de lokale transactie door en retourneert deze.