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

C# 无法在我的控制器方法中捕获在我的存储库中引发的DbUpdateException,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我有以下注册操作方法:- [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;

我有以下注册操作方法:-

[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");}  }
在repository类中调用以下Save方法:-

public void Save() {
            entities1.SaveChanges();
        }
使用上述代码,我面临以下两个问题:-

  • 如果两个系统用户在同一类中注册了同一用户,则将在
    存储库.Save()上引发以下异常
    DbUpdateException
    和捕获(System.Data.UpdateException ex)
    将不会处理它。那么,我如何强制将异常传递给我的操作方法呢

  • 如果发生异常,如何返回警报框(指示用户可能已添加到此类),而不是返回
    PartialView(“_error”)}

  • BR

    1)据我所知,DbUpdateException不是UpdateException的子类,因此如果您想捕获DbUpdateException,您可能应该特别捕获它。或者,您可以捕获DataException,它是UpdateException和DbUpdateException的基类(据我所见,DbUpdateException不是UpdateException的子类,因此如果您想要捕获DbUpdateException,您可能应该特别捕获它。或者,您可以捕获DataException,它是UpdateException和DbUpdateException的基类