Transaktionsstöd
LINQ till SQL har stöd för tre distinkta transaktionsmodeller. Följande visar dessa modeller i ordning efter utförda kontroller.
Explicit lokal transaktion
När SubmitChanges anropas körs anropet Transaction SubmitChanges i kontexten för samma transaktion om egenskapen är inställd på en (IDbTransaction
) transaktion.
Det är ditt ansvar att checka in eller återställa transaktionen efter att transaktionen har utförts. Anslutningen som motsvarar transaktionen måste matcha anslutningen som används för att DataContextkonstruera . Ett undantag utlöses om en annan anslutning används.
Explicit distribuerbar transaktion
Du kan anropa LINQ till SQL-API:er (inklusive men inte begränsat till SubmitChanges) i omfånget för en aktiv Transaction. LINQ till SQL identifierar att anropet ligger i omfånget för en transaktion och inte skapar en ny transaktion. LINQ till SQL undviker också att stänga anslutningen i det här fallet. Du kan utföra frågor och SubmitChanges körningar i samband med en sådan transaktion.
Implicit transaktion
När du anropar SubmitChangeskontrollerar LINQ till SQL om anropet finns i omfånget för en Transaction eller om Transaction
egenskapen (IDbTransaction
) är inställd på en lokal transaktion som startats av användaren. Om den inte hittar någon transaktion startar LINQ till SQL en lokal transaktion (IDbTransaction
) och använder den för att köra de genererade SQL-kommandona. När alla SQL-kommandon har slutförts genomför LINQ till SQL den lokala transaktionen och returnerar.