All,Unity Lifetime quản lý & EF Data Context -> Thực hành tốt nhất
Đã có rất nhiều bài viết về quản lý Lifetime Unity nhưng tôi vẫn chưa tìm được người nêu một nguyên tắc nhỏ cho "trong những trường hợp bạn nên luôn sử dụng X ". Để tôi mô tả ứng dụng của mình, tôi có một ứng dụng web ASP.NET MVC 4. Tôi có một giải pháp Visual Studio có chứa 3 dự án, dự án 'Core' của tôi có tất cả các công cụ EF của tôi, một dự án thử nghiệm và Dự án MVC Web. Tôi đang sử dụng Unity cho dependency injection và đã đoạn mã sau ngay bây giờ:
// Context
container.RegisterType<IDatabaseFactory, DatabaseFactory>(
new ContainerControlledLifetimeManager();
container.RegisterType<UnitOfWork>(
new ContainerControlledLifetimeManager());
Tuy nhiên, tôi nhận thấy rằng bối cảnh của tôi không được tái tạo lại với mọi yêu cầu web mới đó là những gì tôi nghĩ rằng tôi muốn (cho tôi biết nếu tôi sai trong giả định đó). Tôi đang có một thời gian khó phân tích tất cả các thông tin từ các trang web được liệt kê dưới đây và đã đọc về rất nhiều người tạo ra lớp riêng của họ có tên là PerHttpRequestLifetimeManager để xử lý việc này.
Thực tiễn tốt nhất ở đây là gì?
- Managers Lifetime Hiểu bởi Microsoft Developer Network - http://msdn.microsoft.com/en-us/library/ff660872(v=PandP.20).aspx
- MVC DI & Unity với Lifetime quản lý qua CodeProject - http://www.codeproject.com/Articles/424743/MVC-DI-Unity-with-Lifetime-Manager
- ASP.NET MVC Mẹo: Dependency Injection với Unity Application Block qua Blog Shiju Varghese của - http://weblogs.asp.net/shijuvarghese/archive/2008/10/24/asp-net-mvc-tip-dependency-injection-with-unity-application-block.aspx
- MVC, EF - Ví dụ đơn lẻ DataContext Per-Web-Yêu cầu trong Unity qua Stack Overflow - MVC, EF - DataContext singleton instance Per-Web-Request in Unity
- Tiêm cùng DataContex t thể hiện trên nhiều loại với Unity qua Stack Overflow - Inject same DataContext instance across several types with Unity
Related: http://stackoverflow.com/questions/10585478/one-dbcontext-per-web-request-why. – Steven