попробуйте ..catch затем откатите уже запущенный сохраненный продукт в веб-приложении .net c #

#c# #.net #web-applications

#c# #.net #веб-приложения

Вопрос:

Кто-нибудь знает, как я могу откатить уже запущенный сохраненный prod внутри try … catch в .net c #?

Пример:

Если у меня есть 2 сохраненных процесса, которые необходимо запустить, создается 2 функции для запуска каждого из сохраненных продуктов, и эти функции будут вызываться внутри try … catch, 1-й сохраненный продукт выполняется успешно, однако у 2-го сохраненного продукта ошибка и тайм-аут. В этом случае я могу каким-либо образом откатить первый сохраненный продукт в моем .net c #?

Комментарии:

1. вам придется использовать оператор транзакции. не уверен насчет сохраненных процедур — возможно, придется их модифицировать .. что-то вроде этого davidhayden.com/blog/dave/archive/2005/10/14/2515.aspx или это 4guysfromrolla.com/webtech/080305-1.shtml

Ответ №1:

Взгляните на

 private static void DemoFunc() 
   {
      SqlConnection conn = new SqlConnection("");//conection string here
      SqlTransaction transaction;
      SqlCommand cmd;

      conn.Open();
      transaction = conn.BeginTransaction();
      try 
      {
         cmd = new SqlCommand("MySP1", conn, transaction);
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.ExecuteNonQuery();

         cmd = new SqlCommand("MySP2", conn, transaction);
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.ExecuteNonQuery();
         transaction.Commit();
      } 
      catch (SqlException sqlError) 
      {
         transaction.Rollback();
      }
      conn.Close();
   }
  

Надеюсь, это поможет.