似乎存儲庫模式負責來自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列表。 –