Согласно вашему требованию, существует два способа определения SqlTransaction
- SQL Server на стороне SqlTransaction
- C # .NET (бизнес-уровень) SqlTransaction.
(Оба не могут быть смешаны)
В вашем случае вы пытались определить SqlTransaction
на бизнес-уровне. Так что лучше позвоните Stored-procedure
тоже на бизнес-уровне. Таким образом, бизнес-уровень исправит SqlTransaction
и ошибка тайм-аута не возникнет.
Поэтому сначала включите код Stored-Procedure
в качестве выполнения команды (на бизнес-уровне), а затем выполните. Измените код, как показано ниже, с вашими необходимыми условиями.
// Command Objects for the transaction
SqlCommand cmd1 = new SqlCommand("YourStoredProcedureName", cnn);
cmd1.CommandType = CommandType.StoredProcedure;
//If you are using parameter for the Stored-procedure
cmd1.Parameters.Add(new SqlParameter("@Param1", SqlDbType.NVarChar, 50));
cmd1.Parameters["@Param1"].Value = paramValue1;
//Execute stored procedure through C# code
cmd1.ExecuteNonQuery();
transaction.Commit();
РЕДАКТИРОВАНИЕ: Ссылочная ссылка
catch (SqlException sqlEx)
{
if (sqlEx.Number == -2)
{
//handle timeout
}
transaction.Rollback();
}