Tôi hiện đang chơi đùa với các lớp HybridSessionBuilder tìm thấy trên bài đăng blog Jeffrey Palermo:NHibernate quản lý phiên trong ASP.NET MVC
http://jeffreypalermo.com/blog/use-this-nhibernate-wrapper-to-keep-your-repository-classes-simple/
Sử dụng lớp này, kho của tôi trông như thế này:
public class UserRepository : IUserRepository
{
private readonly ISessionBuilder _sessionBuilder;
public UserRepository(ISessionBuilder sessionBuilder)
{
_sessionBuilder = sessionBuilder;
}
public User GetByID(string userID)
{
using (ISession session = _sessionBuilder.GetSession())
{
return session.Get<User>(userID);
}
}
}
Đây có phải là cách tốt nhất để quản lý phiên làm việc/nhà máy NHibernate không? Tôi đã nghe những điều về Đơn vị công việc và tạo một phiên cho mỗi yêu cầu web và xả nó vào cuối. Từ những gì tôi có thể nói, triển khai hiện tại của tôi không thực hiện bất kỳ điều nào trong số này. Về cơ bản, nó dựa vào Kho lưu trữ để lấy phiên làm việc từ nhà máy phiên và sử dụng nó để chạy các truy vấn.
Có bất kỳ cạm bẫy nào để thực hiện truy cập cơ sở dữ liệu theo cách này không?
không chắc chắn về những cạm bẫy nhưng bạn có thể kiểm tra một thực hiện của các đơn vị của mô hình làm việc sử dụng Rhino.Commons qua Steve Bohlen của www.autumnofagile.net ... anh ấy xây dựng một ứng dụng MVC với NHibernate, Windsor và Rhino .Commons ... đó là một chuỗi tuyệt vời – Webjedi