DO NOT BOTHER. THE PROBLEM IS NOT TRANSACTIONS. DUNNO HOW TO CLOSE / DELETE
        Posted  
        
            by matti 
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by matti 
        
        
        
        Published on 2010-04-21T17:18:03Z
        Indexed on 
            2010/04/21
            20:33 UTC
        
        
        Read the original article
        Hit count: 292
        
THE PROBLEM IS SOLVED. I DUNNO HOW TO CLOSE THIS QUESTION. ANOTHER SERVICE IS PROPABLY RUNNING AT ALMOST SAME SYNC THAT DOES THE THING. MY WORK "MATE" WILL HEAR A THING OR TWO IN THE MORNING.
I have following code in windows service: data is in the dataset and it has been populated earlier and then rows are updated and inserted to dataset tables before calling code below.
using (dataSetTxn = _cnctn.BeginTransaction())
{
    try
    {
        _somePlanAdptr.UpdateCommand.Transaction = dataSetTxn;
        _someLogAdptr.InsertCommand.Transaction = dataSetTxn;
        _someLinkAdptr.InsertCommand.Transaction = dataSetTxn;
        _someDataAdptr.InsertCommand.Transaction = dataSetTxn;
        _log.WriteDebug("Updating SomePlanAction");
        _somePlanAdptr.Update(_ofDataSet, "SomePlanAction");
        _log.WriteDebug(string.Format("Inserting {0} rows to SomeLog")); //error
        _someLogAdptr.Update(_ofDataSet, "SomeLog"); 
        _log.WriteDebug(string.Format("Updating SomeLink with {0} rows", _ofDataSet.Tables["SomeLink"].Rows.Count));
        _someLinkAdptr.Update(_ofDataSet, "SomeLink");
        _log.WriteDebug(string.Format("Updating SomeData with {0} rows", _ofDataSet.Tables["SomeData"].Rows.Count));
        _someDataAdptr.Update(_ofDataSet, "SomeData");
        _log.WriteDebug("Commiting all changes to database.");
        dataSetTxn.Commit();
    }
    catch (Exception e)
    {
        _log.WriteError("Updating database failed -> rollback", e);
        if (dataSetTxn != null && _cnctn.State == ConnectionState.Open)
            dataSetTxn.Rollback();
        throw e;
    }
}
so one of the lines causes an exception
log.WriteDebug(string.Format("Inserting {0} rows to SomeLog")); //error
still the first adapter's data is updated to database. when debugged the data is not yet updated until the method that calls all (including this bit) exits. The method that does all is timed with System.Threading.Timer.
Thanks & BR -Matti
© Stack Overflow or respective owner