У меня сложная хранимая процедура. Внутри него несколько 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;
}