无法在控制器方法的存储库中捕获引发的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();
}
使用上述代码,我面临以下两个问题:-
如果两个系统用户在同一类中注册了同一个User,则以下异常将在
repository.Save();
上引发DbUpdateException
,而catch (System.Data.UpdateException ex)
将不会处理它。那么,我如何才能强制将异常传递给我的操作方法呢?如果发生异常,我如何返回一个警告框(指示用户可能已经添加到此类),而不是返回
PartialView("_error");}
?。
BR
1)据我所见,DbUpdateException不是UpdateException的子类,所以如果你想捕获DbUpdateException,你可能应该专门捕获它。或者,您可以捕获DataException,它是UpdateException和DbUpdateException 的基类