似乎存储库模式负责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()
)
或者将它们放在控制器中会更好吗?
答案 0 :(得分:0)
正如@Chetan指出的那样,服务层是您的数据访问层(DAL)。因此,在您的服务中使用StudentExcelExport()
和GetDateRange()
不是最佳做法。服务层应该只有处理数据库操作的方法。
由于您的两种方法只是准备视图组件,因此应该在控制器级别。对于其他复杂逻辑,您可以使用业务逻辑层而不是与DAL混合。
或者将它们放在控制器中会更好吗?
将答案放在控制器中。
希望这有帮助!