我目前工作的應用程序,需要每一個對數據庫所做的另一個表進行審覈:DDD審計?域層或存儲庫層?
例如:Employee表中有EmployeeAuditTable
我一直在辯論上,我應該把審覈功能! DDD之後,任何人都可以向我提供他們的建議和意見。
我想到的選項如下 1.)當「Repository」調用保存更改時,我應該從存儲庫執行審覈邏輯(這是不好的設計/實踐,是否不僅需要Repository持續的變化,但也仍然存在審覈的詳細信息,以及它甚至很好的做法,有一個從倉庫(IAuditService在這種情況下))
例1中被稱爲服務:?
public class EmployeeRepository : IRepository
{
DbContext _db;
IAuditService _auditService;
EmployeeRepository(IAuditService auditService)
{
_auditService = auditService
}
void Update(Employee empl)
{
// Update Employee with dbcontext entity framework
// Perform Audit using AuditService
}
void SaveChanges()
{
// Call save changes on dbcontext
}
}
2)應我在我的應用程序服務中呼叫IAuditService
實施例2:
public class EmployeeService
{
IAuditService _auditService;
IUnitOfWork _unitOfWork;
IEmployeeRepository _repository;
EmployeeService(IAuditService auditService, IUnitOfWork unitOfWork, IEmployeeRepository repo)
{
_auditService = auditService;
_unitOfWork= unitOfWork;
_repo = repo;
}
void UpdateEmployee(int id, string name, int age)
{
// Get Employee
// Update Employee
// Audit Changes
// Commit Transaction
}
}