Câu hỏi của tôi tương tự như câu hỏi này về Stack Overflow: Cách chính xác để sử dụng Đơn vị công việc / Kho lưu trữ trong lớp nghiệp vụ là gì?
Kịch bản:
- Giải pháp .Net
- Kho lưu trữ được sử dụng để truy xuất các đối tượng từ DB
- IUnitOfWork được sử dụng để cho phép giao dịch trên nhiều kho lưu trữ
Điều này có ý nghĩa với tôi và tôi đã thực hiện một cái gì đó dọc theo những dòng này hoạt động tốt. Bây giờ tôi muốn giới thiệu một lớp logic kinh doanh và đang gặp khó khăn khi tổ chức ba yếu tố (BLL, UnitOfWork và Kho lưu trữ) trong tâm trí của tôi.
Sự hiểu biết của tôi:
- Kho lưu trữ - truy xuất dữ liệu, thao tác
- UnitOfWork - kiên trì
- BLL - logic liên quan đến doanh nghiệp ('thế giới thực') (không thích thuật ngữ đó!)
Hãy xem xét chúng tôi có một giao diện người dùng ASP.Net MVC.
BLL trông như thế nào và bộ điều khiển MVC sử dụng nó trông như thế nào?
Để tham khảo: Tôi tự hỏi liệu có lẽ việc triển khai IUnitOfWork / IRep repository của tôi có thể là nguyên nhân cơ bản của sự nhầm lẫn của tôi không.
public class IRepository<T>
{
private IObjectSet<T> objSet;
public IRepository<T>(IUnitOfWork uow)
{
objSet = uow.CreateObjectSet<T>();
}
public IQueryable<T> Add(T entity)
{
objSet.Add(entity);
}
//etc. etc. for delete, attach, getall
}
Vì vậy, tôi cảm thấy nếu tôi có BLL, tôi nên chuyển nó cho IUnitOfWork, để nó có thể sử dụng nó để tạo các thể hiện IRep repository mà nó cần. Nhưng làm thế nào BLL (tách DLL từ giao diện người dùng) 'biết' triển khai IRep repository để xây dựng?