Back to list
Views:   0
Replies:  0
Archived
,
Reply 1
Hello Mark: 

Indeed, SPARK was not handling the rollbacks properly.
The changes below will make it work:(the same changes will be available in the next release of SPARK). 

In the code-generated Core.cs file insert the following method below the EndTransaction method. 

public void RollbackTransaction()
{
    if (_transaction != null)
    {
        _transaction.Rollback();
        _transaction.Dispose();
        _transaction = null;

        if (_connection != null)
        {
            _connection.Close();
            _connection.Dispose();
            _connection = null;
        }
    }
}

Then in the same file you will find a UnitOfWork class.
Remove the public virtual void Dispose method and replace it with the following methods: 

public void Complete()
{
    db.EndTransaction();
}

public void Dispose()
{
    Dispose(true);
    GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
    if (disposing) 
    {
        db.RollbackTransaction();
    }
}

Finally, in your own code add the following line just before the closing curly brace:
    uow.Complete();

This will explicitly commit the transaction.  
If the Complete method is not called, either by not including it or because of an exception, then the transaction will roll back. 

Again, the next release of SPARK will include the same corrections. 

Hope this helps. 
Jack

 
Jack Poorte, Oct 12, 2015
Stay Inspired!
Join other developers and designers who have already signed up for our mailing list.
Terms     Privacy     Licensing       EULA       Sitemap      
© Data & Object Factory, LLC.
Made with    in Austin, Texas