#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();
}
Надеюсь, это поможет.