我目前工作的应用程序,需要每一个对数据库所做的另一个表进行审核: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
}
}