Transakcje Entity Framework

Transakcje Entity Framework
P4
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
  • Postów:159
0

Mam pytanie jak efektywnie i prawidłowo zapisać poniższą transakcję

transakcja wywoływana jest w ten sposób

Kopiuj
using (var dbContextTransaction = context.Database.BeginTransaction()) 
{

  1. Dodanie rekordów do encji A, komendą context.Set<encja A>.Add(encja)
  2. Zapis zmian context.SaveChanges()
  3. Commit by punkt 4 mógł czytać dodane do encji A rekordy w punkcie 1, komendą dbContextTransaction.Commit()
  4. Dodanie rekordów do encji B, plus  zapis informacji w postaci krótkich list dodawanych rekordów encji B, do rekordów encji A 
     ( dodanych w punkcie 1)

  context.SaveChanges(); 
 
  dbContextTransaction.Commit(); 
} 
  catch (Exception) 
                    { 
                        dbContextTransaction.Rollback(); 
                    } 

Pytanie dodatkowe, czy w Entity Framework dodanych rekordów do encji metodą context.Set<encja A>.Add(encja), nie można odczytać przed ich zapisem metodą context.SaveChanges(); ?
w przypadku objęcia taką transakcją trzeba jeszcze wykonać commit ale to szczegół.

Jak objąć jedną transakcją, dodanie rekordów do encji A i encji B, bez zapisu ich do bazy nim nie wykona się punkt 4, który informacje o dodanych rekordach do encji B zapisuje do wcześniej dodanych rekordów encji A w tej samej transakcji ?

przykład https://msdn.microsoft.com/en-us/library/dn456843(v=vs.113).aspx

edytowany 3x, ostatnio: Pawel412
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Wrocław
0

Użyć prawdziwego ORMa.

Zobacz pozostałe 5 komentarzy
somekind
ORM do spania?
somekind
Ja nigdy nie śpię. A Ty lepiej nie przesadzaj.
WeiXiao
@somekind: Z czym przesadzam? :P Ja nie spie, bo kochany inaczej linux sam sobie nie ogarnie Core
somekind
Ale ja Tobie nie mówię, żebyś szedł spać.
P4
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
  • Postów:159
0

w ASP.NET jaki byłby dobry do takich rozwiązań ? szybki ?

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Wrocław
1

NHibernate, Dapper, zależy co chcesz osiągnąć, czy masz już bazę, itd.

P4
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
  • Postów:159
0

dziękuję

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.