我正在使用ASP.NET MVC 3
.
我仍然对存储库层中会发生多少感到困惑。我一直认为它必须只做需要做的事情,仅此而已。
我一直在使用一个服务层,该服务层又调用我的存储库层。我总是有一个对应的服务层用于存储库层,以及一个对应的服务层方法用于存储库方法,即使它只是为了获取项目列表。所以我会有以下服务层:
public class UnitService : IUnitService
{
private readonly IUnitRepository unitRepository;
public UnitService(IUnitRepository unitRepository)
{
this.unitRepository = unitRepository;
}
public IEnumerable<Unit> GetAll()
{
return unitRepository.GetAll();
}
}
这就是我的存储库层的样子:
public class UnitRepository : IUnitRepository
{
// Partial code
public IEnumerable<Unit> GetAll()
{
return DbContext.Units
.Include("Department")
.OrderBy(x => x.Name);
}
}
如果不是真的需要,我正在尝试减少我的服务层类。那么只从我的控制器而不是服务层调用存储库可以吗?我是否按照自己的方式做真的很重要吗?我的意思是它仍然带回了我所有的数据。
我将在哪里进行缓存和日志记录?服务层还是在存储库中?假设 GetAll 方法带回了许多需要缓存的记录。我会将其缓存在存储库中还是需要一个服务层?
日志记录也是如此。我会在哪里记录以下内容:
Log.Info("Adding category: {0}, {1}", entity.Id, entity.Name);
// adding code
Log.Info("Category added: {0}, {1}", entity.Id, entity.Name);