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 = null;
if (_connection != null)
_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()
public void Dispose()
protected virtual void Dispose(bool disposing)
Finally, in your own code add the following line just before the closing curly brace:
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.