我正在开发一个 asp.net mvc 应用程序,其中 user1 可以删除 user2 之前刚刚加载的数据记录。User2 要么更改此不存在的数据记录(更新),要么正在将此数据插入另一个违反外键约束的表中。
你在哪里捕捉到这样的预期异常?
在您的 asp.net mvc 应用程序的控制器中还是在业务服务中?
只是一个旁注:我只在此处捕获 SqlException,如果它是 ForeignKey 约束异常,以告诉用户另一个用户已删除某个父记录,因此他无法创建测试计划。但是这段代码还没有完全实现!
控制器:
public JsonResult CreateTestplan(Testplan testplan)
{
bool success = false;
string error = string.Empty;
try
{
success = testplanService.CreateTestplan(testplan);
}
catch (SqlException ex)
{
error = ex.Message;
}
return Json(new { success = success, error = error }, JsonRequestBehavior.AllowGet);
}
或者
商业服务:
public Result CreateTestplan(Testplan testplan)
{
Result result = new Result();
try
{
using (var con = new SqlConnection(_connectionString))
using (var trans = new TransactionScope())
{
con.Open();
_testplanDataProvider.AddTestplan(testplan);
_testplanDataProvider.CreateTeststepsForTestplan(testplan.Id, testplan.TemplateId);
trans.Complete();
result.Success = true;
}
}
catch (SqlException e)
{
result.Error = e.Message;
}
return result;
}
然后在控制器中:
public JsonResult CreateTestplan(Testplan testplan)
{
Result result = testplanService.CreateTestplan(testplan);
return Json(new { success = result.success, error = result.error }, JsonRequestBehavior.AllowGet);
}