Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak robisz wersjonowanie w Nhibernate?

Nie. Blokady są nakładane tylko na zakres transakcji, która w aplikacji internetowej kończy się wraz z zakończeniem żądania. Ponadto domyślnym typem trybu izolacji transakcji jest Zatwierdzony odczyt co oznacza, że ​​blokady odczytu są zwalniane zaraz po zakończeniu instrukcji select. Jeśli czytasz i edytujesz w tym samym żądaniu i transakcji, możesz umieścić blokadę odczytu i zapisu w danym wierszu, co uniemożliwiłoby innym transakcjom zapis lub odczyt z tego wiersza. Jednak ten rodzaj kontroli współbieżności nie działa dobrze w aplikacji internetowej.

Stałoby się tak, gdyby użyto [optymistycznej współbieżności]. W NHibernate optymistyczna współbieżność działa poprzez dodanie pole wersji . Polecenia zapisu/aktualizacji są wydawane z wersją, na której została oparta aktualizacja. Jeśli różni się to od wersji w tabeli bazy danych, żadne wiersze nie są aktualizowane, a NHibernate wyrzuci.

Nie, blokada zostaje zwolniona na końcu żądania.

Ogólnie rzecz biorąc, najlepszym rozwiązaniem jest wybór optymistycznej współbieżności z polami wersji zarządzanymi przez NHibernate.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błędne milisekundy podczas konwersji z formatu XML na datę i godzinę w programie SQL Server

  2. Klawisz skrótu do modyfikacji procedury składowanej w ssms

  3. Wysyłaj SMS-y za pomocą wyzwalaczy i procedur składowanych z SQL Server 2008

  4. Czy SQL Server otacza Select...Insert Queries w niejawną transakcję?

  5. Jak uzyskać dolne 50% zapytania wybierającego na serwerze SQL?