user1 が user2 によって直前にロードされたデータ レコードを削除できる asp.net mvc アプリケーションを開発しています。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);
}