using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
{
try
{
using (IDbConnection sqlConnection = GetDbconnection("SQL_CONNECTION_STRING"))
{
using (IDbConnection db2Connection = GetDbconnection("DB2_CONNECTION_STRING"))
{
sqlConnection.Open();
db2Connection.Open();
string db2Query1 = ""; // INSERT QUERY
result = await db2Connection.QueryFirstOrDefaultAsync<bool>(db2Query1, new DynamicParameters(), commandType: CommandType.Text);
string db2Query2 = ""; // INSERT QUERY
result = await db2Connection.QueryFirstOrDefaultAsync<bool>(db2Query2, new DynamicParameters(), commandType: CommandType.Text);
string procName = "SP_NAME";
DynamicParameters dynamicParams = new DynamicParameters();
dynamicParams.Add("Parameter1", "VALUE1", DbType.String);
GridReader sqlResult = await sqlConnection.QueryMultipleAsync(procName, dynamicParams, commandType: CommandType.StoredProcedure, commandTimeout: 30);
resultSet = await sqlResult.ReadAsync<T>();
int sqlExecResult = await sqlConnection.ExecuteAsync(procName, dynamicParams, commandTimeout: 30, commandType: CommandType.StoredProcedure);
scope.Complete(); // COMPLETE THE TRANSACTION
IsSuccess = true;
}
}
}
catch (Exception ex)
{
errorMessage = ex.Message;
throw;
}
}
It is not working only for DB2 and I could see that once inserted it gets committed immediately.
But SQL Server rollback works fine. Until the call is complete() SQL server waits to commit but DB2 commits immediately.
Please let me know what is the issue in my code