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

时间:2012-03-13 20:30:35

标签: 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;
            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. 如果两个系统用户在同一个类中注册了同一个用户,则DbUpdateException上将repository.Save();引发以下异常catch (System.Data.UpdateException ex)PartialView("_error");}将无法处理。那么我如何强制将异常传递给我的动作方法呢?

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

  3. BR

1 个答案:

答案 0 :(得分:1)

1)据我所知,DbUpdateException不是UpdateException的子类,所以如果你想捕获DbUpdateException,你应该特别注意到它。或者,您可以捕获DataException,它是UpdateException和DbUpdateException的基类