Асинхронные транзакции в MVC .NET 4.7.2 - PullRequest
0 голосов
/ 07 ноября 2018

Использование Microsoft MVC .NET 4.7.2.

Мой вопрос касается использования SqlTransaction в асинхронном методе, как показано ниже.

public async Task DeleteSomethingAsync(int id)
{
    SqlTransaction sqlTransaction = null;

    try
    {
        using (SqlConnection sqlConnection = new SqlConnection(_connectionString))
        {
            using (SqlCommand sqlCommand = sqlConnection.CreateCommand())
            {
                await sqlConnection.OpenAsync();

                using (sqlTransaction = sqlConnection.BeginTransaction(IsolationLevel.ReadCommitted))
                {
                    sqlCommand.Transaction = sqlTransaction;

                    sqlCommand.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int) { Value = id });

                    sqlCommand.CommandText = @"DELETE FROM first_table "
                                           + @"WHERE (some_id = @Id)";

                    await sqlCommand.ExecuteNonQueryAsync();

                    sqlCommand.CommandText = @"DELETE FROM second_table "
                                           + @"WHERE (some_id = @Id) ";

                    await sqlCommand.ExecuteNonQueryAsync();

                    sqlTransaction.Commit();
                }
            }
        }
    }
    catch
    {
        // Some error logging blah.

        try
        {
            sqlTransaction?.Rollback();
        }
        catch
        {
            // Some error logging blah.
        }
    }
}

Кажется, что нет никакого sqlConnection.BeginTransaction Async .

Кажется, существует метод BeginTransactionAsync для .NET Core.

Там также из некоторых документов MS, кажется, это:

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/asynchronous-programming

// Start a local transaction.  
transaction = await Task.Run<SqlTransaction>(  
    () => connection.BeginTransaction("SampleTransaction")  
);

Это кажется неуместным в IIS (может, я ошибаюсь?)

Как и в большинстве случаев с Microsoft, теперь информация повсюду.

Как правильно использовать транзакцию в асинхронном методе в 2018 году с использованием MVC и .NET 4.7.2.

...