버전 1)을 수동으로 확인하거나 2) DB에서 버전 관리 기능 및 타임 스탬프 유형으로 빌드 된 NHibernate를 사용합니다. (SQL Server는이를 지원합니다.하지만 대부분의 경우 다른 DB도 마찬가지입니다). 두 번째 경우에는 exception
을 처리해야합니다.
병행하면 버전 매핑 열
CREATE TABLE [dbo].[MyTable](
...
[Version] [rowversion] NOT NULL -- new keyword for deprecated [timestamp]
...
그런 조정을 만들 수 있습니다 당신은 SQL 서버로 작업하는 경우에는
NHibernate에 http://ayende.com/blog/3946/nhibernate-mapping-concurrency에서 처리 할 수있는 방법에 대한 자세한 설명이 있습니다 :
<version name="Version" generated="always" unsaved-value="null" type="BinaryBlob">
<column name="Version" not-null="false" sql-type="timestamp" />
</version>
그리고 버전을 넘겨 야합니다. ient 및 POST에 바인딩합니다 (예 :
) base64
대로, NHibernate에이 NHibernate.StaleObjectStateException
던질 것이다 DB에 다음 이전 버전의 값이 session.Update(entity)
에 노력할 것입니다 때마다. 이 경우에만 처리 할 수 있습니다. 버전이 일치하면 모두 올바르게 작동하고 UPDATE 문이 성공합니다.
사용자에게 변경된 내용을 전달하고 변경 내용을 병합하는 수단을 제공해야하므로 병행 성 검사가 어려워지는 지점입니다. –