Tôi đang suy nghĩ về việc thực hiện IUnitOfWork
thực hiện của riêng mình cho lớp kiên trì NHibernate.bạn có thể có nhiều giao dịch xảy ra bên trong một phiên trong nhibernate? Và đó là một ý tưởng tồi?
Có vẻ như cách phù hợp để thực hiện điều này là để có ISession
và số ITransaction
khởi tạo trong hàm tạo và sau đó được xử lý trong hàm hủy hoặc phương thức Dispose()
.
Tất nhiên, nếu ai đó gọi phương thức Save()
thì ISession
sẽ được rửa và ITransaction
sẽ được hoàn thành, vì vậy sau khi gọi Save()
, sẽ không có một giao dịch mở hợp lệ để Save()
một lần nữa ... trừ khi tôi phạm giao dịch đầu tiên và ngay lập tức mở một giao dịch mới. Nhưng đây có phải là một ý tưởng hay không?
Thiết kế khôn ngoan, nó có ý nghĩa để thực hiện một thao tác cam kết, nhưng tôi sẽ không nhất thiết phải kiểm soát mã và các nhà phát triển khác có thể bị kỷ luật ít hơn theo mẫu UnitOfWork.
Tôi có mất/đạt được bất kỳ thứ gì bằng cách cố gắng làm cho UnitOfWork khoan dung với nhiều giao dịch mỗi phiên không? Tôi có nên chỉ kiểm tra một giao dịch mở và ném một ngoại lệ nếu nó đã được cam kết, thay vì thực hiện một giao dịch mới?
Ứng dụng web hoặc máy tính để bàn? – Phill
Nó đang được thiết kế cho một ứng dụng web. –