Transaction Class

A transaction makes sure that changes that were made to the store are treated as a group that can be committed or rolled back.

Inheritance Hierarchy


Namespace: Microsoft.VisualStudio.Modeling
Assembly: Microsoft.VisualStudio.Modeling.Sdk.11.0 (in Microsoft.VisualStudio.Modeling.Sdk.11.0.dll)


Public Class Transaction _
    Inherits MarshalByRefObject _
    Implements IDisposable
public class Transaction : MarshalByRefObject, 
public ref class Transaction : public MarshalByRefObject, 
type Transaction =  
        inherit MarshalByRefObject 
        interface IDisposable 
public class Transaction extends MarshalByRefObject implements IDisposable

The Transaction type exposes the following members.


Name Description
Public property Context Gets the transaction and enables clients to append user data to the transaction.
Public property ContextInstance Gets the Context for this transaction.
Public property ForceAllRulesToCommitTime Gets or sets a flag that forces all nested rules to occur at LocalCommit time for the current transaction.
Public property HasPendingChanges Gets the transaction and verifies whether changes to the store have been made during this transaction.
Public property HaveCommitTimeRulesFired Indicates whether the commit time rules have been fired or not
Public property Id Gets the ID for this transaction.
Public property InRollback Gets the transaction and verifies whether this transaction is being rolled back.
Public property IsActive Gets the transaction and verifies whether this transaction is processing.
Public property IsHidden Gets the transaction and verifies whether the transaction is hidden.
Public property IsNested Gets the transaction and verifies whether a transaction is nested within another transaction.
Public property IsSerializing Gets the transaction and verifies whether the transaction is currently serializing.
Public property Name Gets or sets the name of the transaction.
Public property Parent Gets the top-level transaction that is assigned to the nested transaction.
Public property PartitionStates Gets information about the state of all partitions in the store.
Public property SequenceNumber Gets the sequence number for the transaction.
Public property Store Gets the store to which the transaction belongs.
Public property TopLevelTransaction Gets the top-level transaction of the transaction hierarchy.
Public property TransactionDepth Gets the number of transactions in which this transaction is nested.



Name Description
Public method Commit Commits the transaction.
Public method CreateObjRef Security Critical. Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object. (Inherited from MarshalByRefObject.)
Public method Dispose Disposes the state of the transaction.
Public method Equals Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected method Finalize Finalizes the transaction. (Overrides Object.Finalize.)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetLifetimeService Security Critical. Retrieves the current lifetime service object that controls the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Public method InitializeLifetimeService Security Critical. Obtains a lifetime service object to control the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Protected method MemberwiseClone(Boolean) Creates a shallow copy of the current MarshalByRefObject object. (Inherited from MarshalByRefObject.)
Public method Rollback The Store will be set back to the state that it was in when the transaction was created.
Public method ToString Returns a string that represents the current object. (Inherited from Object.)


Extension Methods

Name Description
Public Extension Method GetSerializationContext Get the SerializationContext active in the context of the specified transaction. The SerializationContext is stored in the TranactionContext of serializing transactions. If the transaction is nested the transaction stack is searched to find the nearest enclosing serialization transaction with a SerializationContext. (Defined by SerializationContextTransactionExtensions.)



A transaction enables you to group changes. It also keeps track of the actions that are performed in a transaction so that they can be undone at a later stage.

Changes to the store must be done in a transaction. Changes to the store are made only if the transaction commits. A transaction can have the store accept the changes when the local transaction is committed or when the top-level transaction is committed. Local transactions are nested in a top-level transaction. A nested transaction must commit or roll back before the next top-level transaction can commit or roll back. For more information, see the example for the TransactionDepth property.

A transaction also keeps track of the actions that have occurred. This enables a group of actions to be undone or redone at a later stage with the UndoManager property.

A transaction should be disposed. This can be done by using the Dispose method or by creating the transaction in a Using construct. If the transaction has not been committed when it is disposed, the transaction is automatically rolled back and any changes are canceled.


The following example shows a transaction that modifies the store. The transaction is committed. If the transaction is rolled back, any changes to the store are canceled. The transaction is disposed automatically at the end of the using block.

using (Transaction txCreateElem =  model.Store.TransactionManager.BeginTransaction("Create named element")
  A a = new A(store);
  a.Name = "Fred";
  // Commit the transaction and add the named element to the model

For examples and more information, see Using Transactions.

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also


Microsoft.VisualStudio.Modeling Namespace