无法在控制器方法的存储库中捕获引发的DbUpdateException

本文关键字:DbUpdateException 存储 控制器 方法 | 更新日期: 2023-09-27 18:27:46

我有以下寄存器操作方法:-

[AcceptVerbs(HttpVerbs.Post)]
        public PartialViewResult Register(string id, int classid) {
           try
{
 User user = r.FindUser(id);
            Users_Classes uc = new Users_Classes();
            uc.AddedDate = DateTime.Now;
            uc.ClassID = classid;
            user.Users_Classes.Add(uc);
            repository.Save();
            ViewBag.classid = classid;
            return PartialView("_usersearch2", uc);
}
    catch (System.Data.UpdateException ex)
           { 
    return PartialView("_error");}  }

它在存储库类中调用以下Save方法:-

public void Save() {
            entities1.SaveChanges();
        }

使用上述代码,我面临以下两个问题:-

  1. 如果两个系统用户在同一类中注册了同一个User,则以下异常将在repository.Save();上引发DbUpdateException,而catch (System.Data.UpdateException ex)将不会处理它。那么,我如何才能强制将异常传递给我的操作方法呢?

  2. 如果发生异常,我如何返回一个警告框(指示用户可能已经添加到此类),而不是返回PartialView("_error");}?。

BR

无法在控制器方法的存储库中捕获引发的DbUpdateException

1)据我所见,DbUpdateException不是UpdateException的子类,所以如果你想捕获DbUpdateException,你可能应该专门捕获它。或者,您可以捕获DataException,它是UpdateException和DbUpdateException 的基类

相关文章:
  • 没有找到相关文章