What you want to use is TransactionScopeOption.RequiresNew
. The Supress
option causes your enclosing block to run without an ambient transaction and also without creating a new one. That's what it does.
RequiresNew
causes a new, root transaction scope to be created.
See the summary table in this article on how different options behave.
More on Suppress
:
Suppress is useful when you want to preserve the operations performed by the code section, and do not want to abort the ambient transaction if the operations fail. For example, when you want to perform logging or audit operations, or when you want to publish events to subscribers regardless of whether your ambient transaction commits or aborts.