У меня есть метод Folloiwng Post Action, который передает два параметра в метод репозитория: -
[HttpPost]
public void Delete(string id, int classid )
{
repository.Deleteuserclass(id, classid); }
где метод хранилища: -
public void Deleteuserclass(string a, int u)
{
entities.deleteuserclass(a,u);}
и, наконец, метод репозитория вызовет следующую хранимую процедуру: -
ALTER PROCEDURE dbo.deleteuserclass
@userid nvarchar(50),
@classid int
AS
Begin
Delete from Users_Classes where UserID = @userid AND ClassID = @classid
END
Как я могу передать исключение в метод действия, который будет вызван на стороне базы данных, если хранимая процедура не удаляла ни одной записи?
Edit: -
я обновляю хранимую процедуру следующим образом: -
ALTER PROCEDURE dbo.deleteuserclass
@userid nvarchar(50),
@classid int
AS
Begin
Delete from Users_Classes where UserID = @userid AND ClassID = @classid
if @@rowcount = 0
Raiserror('No record deleted',1,16)
END
и я обновил метод действия: -
public ActionResult Delete(string id, int classid ) {
try{
Thread.Sleep(1000);
Users_Classes u_c = r.FindUserClass(id, classid);
r.Deleteuserclass(id, classid);
return Json(new { IsSuccess = "True", id = u_c.UserID + u_c.AddedDate.ToString("ddMMyyyyHHmmss"), name = u_c.UserID }, JsonRequestBehavior.AllowGet);
}
catch (ArgumentNullException)
{
return Json(new { IsSuccess = "F1" }, JsonRequestBehavior.AllowGet);}
catch (DbUpdateConcurrencyException)
{return Json(new { IsSuccess = "F2" }, JsonRequestBehavior.AllowGet); }
catch (NullReferenceException)
{return Json(new { IsSuccess = "F4" }, JsonRequestBehavior.AllowGet); }
catch (Exception e)
{return Json(new { IsSuccess = "F5" }, JsonRequestBehavior.AllowGet);}
но проблема в том, что если хранимая процедура не удаляла какую-либо запись, приложение вызовет исключение folloiwng NullReferenceException
на return Json(new { IsSuccess = "True", id = u_c.UserID + u_c.AddedDate.ToString("ddMMyyyyHHmmss"), name = u_c.UserID }, JsonRequestBehavior.AllowGet);
,, и оно не вызовет исключение, которое уже должно быть вызвано для хранимой процедуры уровень 'No record deleted'
,, до достижения return
статуса .. так в чем может быть проблема?