似乎存储库模式负责来自CRUD操作和数据访问方法(例如:存储过程),服务层正在利用存储库的方法来执行其工作。存储库模式和服务层
我的问题是,我能否将方法放入服务层,而不使用其存储库的方法?
例如,如果我的仓库有这些方法,
public interface IRepository<T>
{
void Add(T entity);
void Update(T entity);
void Delete(T entity);
}
和IStudentService类
public interface IStudentService
{
void AddNewStudent(Student student);
void UpdateStudent(Student student);
void DeleteStudent(Student student);
ExcelImportVM GetStudentExcelExport(List<Students> list);
List<SelectListItem> GetDateRange();
}
和StudentService类实现:
public class StudentService : IStudentService
{
private IStudentRepository _repository;
public ShopLevelDashService(IStudentRepository repository)
{
_repository= repository;
}
public void AddNewStudent(Student student)
{
return _repository.Add(student);
}
// ..UpdateStudent & DeleteStudent methods
public List<SelectListItem> GetDateRange()
{
var dateRange = new List<ColumnValuesVM>()
{
new ColumnValuesVM { Id = 1, Value = "test" },
new ColumnValuesVM { Id = 2, Value = "test2" }
};
var selectList = new List<SelectListItem>();
// ..foreach
return selectList;
}
ExcelImportVM GetStudentExcelExport(List<Students> list)
{
// ..codes
return viewModel;
}
}
这是否有道理放方法如StudentExcelExport()
和GetDateRange()
服务中不使用仓库中的方法的类? (可能例如:_repository.GetDateRange()
)
或者将它们放在控制器中会更好吗?
服务应只返回业务数据。应该在控制器级别将业务数据转换为用于UI的视图模型和其他可见类型。所以这个服务的方法应该只返回数据,并且在控制器中您应该从该数据创建selectitem列表。 –