Ok, I found that once I resolve an ITransactionManager, I can get the
current transaction and roll it back:

  // constructor injected
  private readonly ITransactionManager _transactionManager;

  ...

  [Transaction]
  public void SomeMethod()
  {
    ...
    _transactionManger.CurrentTransaction.Value.Rollback();
  }

This works fine in both a console app and a WCF service.  HOWEVER - it
doesn't seem to work within a unit test!  The main reason I want a
rollback option is so I can create unit tests for the data layer and
roll back the transactions after the test so the database is left
unmodified.  In a unit test (at least when using MSTest in
VisualStudio), CurrentTransaction is null.  I can't figure out why!

Any ideas?
-Matt


On Nov 4, 12:57 pm, Matt Johnson <[email protected]> wrote:
> I'm trying out the AutoTx facility.  I have it working where I apply
> the [Transaction] attribute to my class and it works great when I want
> the transaction to commit if there are no exceptions.
>
> But how do I explicitly get the transaction to roll back without
> throwing an exception?  Where is the transaction context?
>
> I would have thought Session.Transaction.Rollback() would work, but
> it's not the same transaction.
>
> Thanks!
> -Matt

-- 
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en.

Reply via email to