2008-09-23 29 views

Trả lời

16

NHibernate, theo mặc định, hỗ trợ đồng thời lạc quan. Đồng thời bi quan, mặt khác, có thể được thực hiện thông qua phương pháp ISession.Lock().

Các vấn đề này được thảo luận chi tiết trong this document.

+0

Cảm ơn Jon vì đã trả lời nhanh :-) –

+3

Giao dịch và tài liệu đồng thời ngay tại đây: http://nhforge.org/doc/nh/en/index .html # giao dịch –

+0

Tài liệu hiện có tại đây: http://nhibernate.info/doc/nh/en/index.html#transactions –

22

NHibernate hỗ trợ 2 loại đồng thời lạc quan.

Bạn có thể kiểm tra trường bẩn bằng cách sử dụng thuộc tính "optimistic-lock = dirty" trên phần tử "class" trong tệp ánh xạ hoặc bạn có thể sử dụng "optimistic-lock = version" (cũng là mặc định) . Nếu bạn đang sử dụng phiên bản, bạn cần cung cấp phần tử "phiên bản" trong tệp ánh xạ của bạn để ánh xạ tới một trường trong cơ sở dữ liệu của bạn.

Phiên bản có thể thuộc loại Int64, Int32, Int16, Ticks, Dấu thời gian hoặc TimeSpan và được tự động tăng lên khi lưu. Xem Chapter 5 trong tài liệu NHibernate để biết thêm thông tin.

+3

Chương 5 của tài liệu hiện có tại đây: http://nhforge.org /doc/nh/en/index.html#mapping –

2

Bạn cũng có thể 'chỉ' theo cách thủ công so sánh số phiên bản (giả sử bạn đã thêm thuộc tính Phiên bản vào thực thể của mình).

Tối ưu hóa rõ ràng là tùy chọn duy nhất lành mạnh. Đôi khi tất nhiên, chúng ta phải đối phó với các tình huống điên rồ tuy nhiên ...

Các vấn đề liên quan