Я использовал следующий шаблон для действий моего контроллера:
public ActionResult Create(CreateViewModel model) {
if( !ModelState.IsValid ) {
return View(model);
}
var project = new Project {
Name = model.Name,
// ...
};
projectRepository.Add(project);
return RedirectToAction("Index");
}
Это работает для простых сценариев, но у меня было несколько ситуаций, когда репозитория было недостаточно. Я создал уровень / класс сервиса, который будет обрабатывать сохранение проекта и любую дополнительную бизнес-логику (не обычные проверки с плавной проверкой или аннотациями данных).
public class ProjectService : IProjectService {
void AddProject(Project project) {
// do business logic
// ...
repository.Add(project);
}
}
Как мой сервисный уровень может легко взаимодействовать с моим контроллером?
Вот что я хотел бы сообщить контроллеру:
- Ошибки бизнес-логики / валидации
- Сбои базы данных (не удалось сохранить и т. Д.)
Как я могу сделать это, не возвращая только истинное / ложное или коды состояния из уровня сервиса?