Хранимая процедура запускается как транзакция, когда вызывается асинхронно как пожар и забывает? - PullRequest
0 голосов
/ 04 октября 2019

У меня сложная хранимая процедура. Внутри него несколько Begin/Try;когда я запускаю его из SSMS, он работает как положено и обновляет таблицу Process, чтобы указать текущий шаг, который он выполняет.

Тем не менее, если я вызову его из асинхронного метода пожара и забуду в C #, вся хранимая процедура будет выполняться как транзакция, и она не будет обновлять какие-либо шаги, пока она не будет завершена ... есть ли способотключить это поведение?

Вот код для вызова асинхронной хранимой процедуры C #:

public async Task<ResultObject> LongSPCallAsync()
{
        ResultObject ro = new ResultObject();

        try
        {
            using (_context = new DbContext())
            {
                SqlParameter returnVal2 = new SqlParameter("@ReturnVal2", SqlDbType.Int)
                {
                    Direction = ParameterDirection.Output
                };

                await _context.Database.ExecuteSqlCommandAsync("EXEC @ReturnVal2 = [spLongRunningProcess]", returnVal2).ConfigureAwait(false);
                var oooo = returnVal2.Value;
            }
        }
        catch (Exception e)
        {
            await _logService.AddLogAsync(e, $"Error running SP:", "spLongRunningProcess");
        }

        return ro;
}
...