如果我使用两个服务的方法在相同的行动,如下面它是工作.
[HttpPost, Route("save_changes")]
public async Task<IActionResult> SaveChangesAsync()
{
_logService.CreateLog(logCreateModel);
await _unitOfWork.SaveChangesAsync();
return Ok();
}
但是我需要在不同的动作调用实体更新和SaveChanges方法,因为我想从不同的API发送请求。
[HttpPost, Route("create")]
public async Task CreateLog(LogCreateModel logCreateModel)
{
await _logService.CreateLog(logCreateModel);
}
[HttpPost, Route("save_changes")]
public async Task<IActionResult> SaveChangesAsync()
{
unitOfWork.SaveChangesAsync();
return Ok();
}
这是我的UnitOfWork类**
public class UnitOfWork : IUnitOfWork
{
private readonly PrimeLogDatabaseContext _context;
private IRepository<Log> _log;
private IRepository<LifeCycle> _lifeCycle;
public UnitOfWork(PrimeLogDatabaseContext context)
{
_context = context;
}
public IRepository<Log> log => _log ?? new LogRepository(_context);
public IRepository<LifeCycle> lifeCycle => _lifeCycle ?? new LifeCycleRepository(_context);
public async Task SaveChangesAsync()
{
await _context.SaveChangesAsync();
}
public void SaveChanges()
{
_context.SaveChanges();
}
}
我怎么能?
P. S:我想创建多个日志,并在请求结束时,我想提交所有日志到数据库。我使用UnitOfWork设计,因为我必须从创建过程中分离SaveChanges方法。在另一个API中,我有包括CreateLog请求服务的操作。我使用操作结果时触发的属性向SaveChanges发送请求。
1条答案
按热度按时间tp5buhyn1#
几个月后;我用另一种设计模式解决了这个问题。我在一个API上使用UnitOfWork结构(作为中间件工作),并使用责任链模式。