已经阅读了许多文章,指出不建议将UOW和存储库模式放置在EF Core db上下文之上,我几乎参与其中,并且将在我的一个新项目中实现注入IDBContext的服务。
我几乎说了,因为我以前使用的一个功能是我不了解没有存储库的情况。
在以前的项目中,我在EF上使用了UOW和存储库模式,并从Service中访问了它们。以下方法将在存储库中,此后可以通过从任何服务调用uow.StudentRepository.Get(id)
来调用。
public async Task<Student> Get(Guid id)
{
return await _context.Students
.Include(x => x.Course)
.Include(x=>x.Address)
.Include(x => x.Grade)
.FirstOrDefaultAsync(x => x.Id == id);
}
没有存储库,从IDBContext查询,我将不得不调用...
_context.Students
.Include(x => x.Course)
.Include(x=>x.Address)
.Include(x => x.Grade)
.FirstOrDefaultAsync(x => x.Id == id);
...每次我都想执行此查询。这似乎是错误的,因为它不会是DRY。
问题
有人可以提出一种无需存储库就可以在一个地方声明此代码的方法吗?