2011-01-17 22 views
5

IS của NHibernate cho thấy một phương thức Persist() với hai quá tải. Tôi không thể tìm thấy tài liệu về phương pháp này ở bất cứ đâu. Nó thậm chí không được đề cập trong tài liệu tham khảo NHibernate trên http://nhibernate.info/doc/nh/en/index.html.Tôi có thể tìm tài liệu cho NHibernate ISession.Persist() ở đâu?

Phương pháp này có được chấp nhận hay không? Khi nào nó phải được sử dụng? So sánh với SaveOrUpdate() như thế nào?

Bất kỳ con trỏ nào cũng sẽ được đánh giá cao.

Trả lời

4

Các bình luận cuối cùng về chủ đề này http://opensource.atlassian.com/projects/hibernate/browse/HHH-1273 xác định nó rất tốt:

vẫn tồn tại() cũng được xác định. Nó làm cho một trường hợp tạm thời liên tục. Tuy nhiên, nó không đảm bảo rằng giá trị số nhận dạng sẽ được gán cho trường hợp liên tục ngay lập tức, việc chuyển nhượng có thể diễn ra lúc tuôn ra thời gian. Các spec không nói rằng, mà là vấn đề tôi có với persist().

persist() cũng đảm bảo rằng nó sẽ không thực thi câu lệnh INSERT nếu nó được gọi bên ngoài giao dịch ranh giới. Điều này hữu ích trong các cuộc hội thoại dài hạn với ngữ cảnh Phiên/kéo dài mở rộng.

Cần có phương thức như persist().

tiết kiệm() không đảm bảo như nhau, nó trả về một định danh, và nếu một INSERT đã được thực hiện để có được những định danh (ví dụ như "bản sắc" máy phát điện, không phải là "chuỗi"), INSERT điều này xảy ra ngay lập tức, cho dù bạn là bên trong hay bên ngoài giao dịch. Điều này không tốt trong một cuộc trò chuyện dài với ngữ cảnh phiên/kéo dài mở rộng .

Cũng có vẻ như từ những gì tôi có thể thu thập từ các nguồn khác mà một thực thể có thác = "kiên trì" sẽ thác tại thời điểm cuộc gọi, không phải trên tuôn ra. Điều đó cũng rất hữu ích.

+1

Đó là một tìm kiếm tuyệt vời. Cảm ơn bạn. Tôi nghĩ rằng tôi thực sự nên sử dụng SaveOrUpdate() thay vì Persist() .. nhưng Persist() thực sự có thể hữu ích trong các tình huống nhất định. Bây giờ nếu tôi chỉ có thể tìm ra cách để xác định cascade = persist với FluentNHibernate .... cảm ơn sự giúp đỡ của bạn! –

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