If you don't pass any argument to the attribute's constructor, the class is marked as requiring a transaction. You can explicitly set the transaction behavior by passing a TransactionOption enumerated value, which can be Disabled, NotSupported, Supported, Required, and RequiresNew:

< Transaction( TransactionOption.RequiresNew )>

Even more interesting, you can set the isolation level for the transaction being used, by setting the Isolation property, which in turn can take a TransactionIsolationLevel enumerated value (Any, ReadUncommitted, ReadCommitted, RepeatableRead, or Serializable), and even set the transaction timeout by setting the Timeout property, if you want to override the global timeout value: