Tôi đã thấy nhiều triển khai trên web của những người quản lý các phiên NHibernate và các giao dịch của họ trong một HttpModule.Quản lý phiên và giao dịch NHibernate trong HttpModule
Các HttpModule:
- tạo ra một phiên vào lúc bắt đầu yêu cầu
- kết thúc tốt đẹp toàn bộ yêu cầu trong một giao dịch
- cam kết giao dịch vào cuối yêu cầu
Nếu mọi người sử dụng chiến lược này, họ sẽ xử lý các tình huống sau:
- yêu cầu đến trong
- lấy đối tượng từ cơ sở dữ liệu
- cập nhật đối tượng
- đối tượng không xác nhận
- thay đổi đối với đối tượng là vẫn kiên trì vì các giao dịch được thực hiện trong HttpModule.
Dường như không có cách nào tốt để khôi phục giao dịch trong trường hợp trên. Kế hoạch duy nhất tôi có thể đưa ra là:
- viết xác nhận của mình theo cách bảo đảm thành công trước khi cập nhật đối tượng miền của tôi (lấy xác nhận của tôi ra khỏi mô hình miền).
- quản lý giao dịch của tôi gần hơn với logic nghiệp vụ của tôi và vứt bỏ ý tưởng làm việc đó một cách minh bạch trong một HttpModule. (Tôi đã nhìn thấy một vài bài đăng đề xuất điều này)
Thấy rất nhiều người dường như đang sử dụng phương pháp HttpModule Tôi hy vọng có cách thứ ba để quản lý kịch bản này mà tôi chưa từng nghĩ đến ?
Tôi cũng nói đến cùng một câu hỏi gần đây. Tôi bắt đầu với NHibernate trên một số dự án. Cách tiếp cận cuối cùng của tôi là sử dụng Autofac cho IOC và sử dụng HttpRequestScope cho các phiên. Và tất cả các hoạt động giao dịch trên cấp độ Kho lưu trữ doanh nghiệp. Có lẽ nó không phải là tốt nhất, nhưng nó làm việc tốt cho bây giờ .. – Elph
Xác nhận các thay đổi thay vì xác nhận các thay đổi được áp dụng cho thực thể là dễ dàng hơn nhiều. – Paco
Bạn có tìm thấy câu trả lời cho điều này không? – Rippo