ModelState.Isvalid和DbUpdateConcurrencyException应该在Controller还是Repository中?我创建了一个MVC核心项目,在桌子上进行了脚手架。但是,脚手架不会创建接口或存储库,因此为了正确的软件设计,将插入/更新代码放在存储库中。
只是询问ModelState.IsValid和DbUpdateConcurrencyException是否也应放在存储库中?如果放入存储库,我会收到编译错误。我是软件设计和MVC的新手,还在学习。
控制器
if (ModelState.IsValid)
{
try
{
_context.Update(ProductTransaction);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!ProductTransactionExists(ProductTransaction.Id))
{
return NotFound();
}
else
{
throw;
}
存储库
ProductTransaction.Id= ProductTransactionViewModel.Id;
ProductTransaction.Date= ProductTransactionViewModel.Date
ProductTransaction.CustomerName = ProductTransactionViewModel.CustomerName
答案 0 :(得分:0)
ModelState.Isvalid和DbUpdateConcurrencyException应该在 控制器或存储库?我创建了一个MVC核心项目 脚手架在桌子上。
ModelState.IsValid
属于表示层,它应该留在那里。如果其值为true
,则应在用户提交之前返回用户操纵的相同视图。
DbUpdateConcurrencyException
属于存储库层,您不得将其传播到表示层。发生时捕获该异常。您记录有关它的相关详细信息。之后,您抛出一个自定义激活,例如BusinessException
,其中仅包含用户可以理解的消息,例如“某人已经修改了内容。因此请刷新以查看”。表示层只知道BusinessException
以及如何阅读其消息。