Znalazłem odpowiedź w dokumentacji Entity Framework 6:
Wraz z wprowadzeniem EF6 firma Microsoft zaleca korzystanie z nowych metod API: Database.BeginTransaction()
i Database.UseTransaction()
. Chociaż System.Transactions.TransactionScope
nadal jest bardzo dobrze obsługiwany, nie jest już potrzebny dla większości użytkowników EF6.
Chociaż Database.BeginTransaction()
jest używany tylko do transakcji operacji związanych z bazą danych System.Transactions.TransactionScope
, oprócz tego umożliwia to, że `` zwykły kod C # '' może być również transakcyjny.
Dlatego używaj Database.BeginTransaction()
wszędzie tam , gdzie kiedykolwiek wykonujesz tylko operacje związane z db w transakcji w EF6, w przeciwnym razie używaj System.Transactions.TransactionScope
do mieszania operacji db i kodu C # razem w transakcji.
Tym, którzy nadal preferują to TransactionScope
podejście, zaleca się sprawdzenie jego ograniczeń, szczególnie w scenariuszach chmurowych (scenariusze chmurowe nie obsługują transakcji rozproszonych).
Więcej informacji można znaleźć tutaj