sql >> Database >  >> RDS >> Sqlserver

Hoe doe je versiebeheer in Nhibernate?

Nee. Locks worden alleen geplaatst voor de omvang van een transactie, die in een webapplicatie eindigt wanneer het verzoek eindigt. Het standaardtype transactie-isolatiemodus is ook Lees vastgelegd wat betekent dat leesvergrendelingen worden vrijgegeven zodra de select-opdracht wordt beëindigd. Als u leest en wijzigingen aanbrengt in hetzelfde verzoek en dezelfde transactie, kunt u een lees- en schrijfblokkering op de betreffende rij plaatsen, zodat andere transacties niet naar die rij kunnen schrijven of ervan kunnen lezen. Dit soort gelijktijdigheidscontrole werkt echter niet goed in een webtoepassing.

Dit zou gebeuren als [optimistische gelijktijdigheid] zou worden gebruikt. In NHibernate werkt optimistische gelijktijdigheid door het toevoegen van een versieveld . Opslaan/bijwerken commando's worden gegeven met de versie waarop de update was gebaseerd. Als dat afwijkt van de versie in de databasetabel, worden er geen rijen bijgewerkt en zal NHibernate gooien.

Nee, het slot wordt vrijgegeven aan het einde van het verzoek.

Over het algemeen kun je het beste kiezen voor optimistische gelijktijdigheid met versievelden die worden beheerd door NHibernate.



  1. MySql Query, Selecteer groter dan

  2. Geef het begin van de maand terug in SQLite

  3. Willekeurige rij selecteren per afzonderlijke veldwaarde?

  4. Lettertype wijzigen in MySQL Workbench