我一直在使用下面的模式为我的控制器操作的控制器进行通信:MVC - 应该如何服务层与
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);
}
}
如何将我的业务层容易地与我的控制器进行通信?
这些都是类型的东西,我想传达给控制器:
- 业务逻辑/验证错误
- 数据库故障(未能挽救等)
如何我这样做不只是返回服务层的真/假或状态代码?