Store Class
The store contains an in-memory representation of the elements and links in one or more models.
Inheritance Hierarchy
Object
Microsoft.VisualStudio.Modeling.Store
Namespace: Microsoft.VisualStudio.Modeling
Assembly: Microsoft.VisualStudio.Modeling.Sdk.11.0 (in Microsoft.VisualStudio.Modeling.Sdk.11.0.dll)
Syntax
'Declaration
Public Class Store _
Implements IServiceProvider, IDisposable
public class Store : IServiceProvider, IDisposable
public ref class Store : IServiceProvider, IDisposable
type Store =
class
interface IServiceProvider
interface IDisposable
end
public class Store implements IServiceProvider, IDisposable
The Store type exposes the following members.
Constructors
Name | Description | |
---|---|---|
Store(array<Type[]) | Initializes a new instance of the Store class. | |
Store(IServiceProvider, array<Type[]) | Initializes a new instance of the Store class. | |
Store(IServiceProvider, Dictionary<Object, Object>, array<Type[]) | Creates an instance of the Store class which delegates IServiceProvider implementation to the given serviceProvider. |
Top
Properties
Name | Description | |
---|---|---|
ChangeSource | Gets the current change source for operations in the store. | |
CurrentContext | Gets the current context of the store. | |
DefaultPartition | Gets or sets the default partition for the store. | |
DemandLoading | Gets whether the store is currently demand loading a relationship. | |
Disposed | Gets whether the store has been disposed. | |
DomainDataDirectory | Gets domain information directory of the store. | |
DomainModels | Gets a collection of domain models in this store. | |
ElementDirectory | Gets the directory of elements contained within the store. | |
ElementFactory | Gets the element factory for the model. | |
EventManagerDirectory | Gets the event manager directory for the model. | |
Id | Gets the ID of the store. | |
InRedo | Gets the store and verifies whether the current context of the store is being redone. | |
InSerializationTransaction | Indicates that the store has a currently active serialization transaction in the transaction stack | |
InUndo | Gets the store and verifies whether the current context of the store is being undone. | |
InUndoRedoOrRollback | Gets the store and verifies whether the current context of the store is being redone, undone, or rolled back. | |
Partitions | Gets the Collection of Partition objects for the store. | |
PartitionsAlternate | Gets the partitions used in the store. | |
PropertyBag | Gets the property bag for the store. | |
RuleManager | Gets the rule manager for the store. | |
SerializerDirectory | The default serialization directory for this store | |
ShuttingDown | Gets the store and verifies whether the store is shutting down, or sets the state of the store as shutting down. | |
TransactionActive | Gets or sets whether the store has a currently active transaction. | |
TransactionLogs | Gets the current list of transaction logs for the store. | |
TransactionManager | Gets the transaction manager for the model. | |
UndoManager | Gets the UndoManager for the default context. | |
Version | Gets the version of the store. |
Top
Methods
Name | Description | |
---|---|---|
AddMonikerResolver | Register an IMonikerResolver for the specified domain model. | |
DefaultPartitionForClass | Return the partition into which new elements of the specified class should be created by default. | |
Dispose | Disposes the store. | |
Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
FindDomainModel | Finds a domain model by its ID. | |
FindMonikerResolver | Finds the IMonikerResolver registered for the specified domain model. | |
GetClosurePrototypeGroup(ICollection<ModelElement>, ClosureType) | Creates an element group prototype in the default partition of the given closure type if a list of root elements is specified. | |
GetClosurePrototypeGroup(ICollection<ModelElement>, ClosureType, Boolean) | Creates an element group prototype in the default partition of the specified closure type when given a list of root elements and allows bypassing of demand loading. | |
GetDomainModel(Guid) | Gets an instance of a domain model by its ID. | |
GetDomainModel<T>() | Gets an instance of a specified domain model type. | |
GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) | |
GetService | Gets a service. | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
LoadDomainModels | Creates all the domain data for the specified list of domain models. | |
MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
PopContext | Removes the current context off the top of the stack. | |
PushContext | Pushes a new context to the top of the store context stack. | |
RegisterTransactionLog | Allows a client to register a transaction log that will be notified of events on this store. | |
ToString | Returns a string that represents the current object. (Inherited from Object.) | |
UnregisterTransactionLog | Allows a client to unregister a transaction log from being notified of events on this store. |
Top
Events
Name | Description | |
---|---|---|
StoreDisposing | Occurs when the store is disposing. |
Top
Extension Methods
Name | Description | |
---|---|---|
GetLocks | Get the lock flags for this Store instance (Defined by ImmutabilityExtensionMethods.) | |
IsLocked | Test whether this store has any of a specified set of locks (Defined by ImmutabilityExtensionMethods.) | |
SetLocks | Set the lock flags of this Store instance (Defined by ImmutabilityExtensionMethods.) |
Top
Remarks
The store contains information about one or more models. A store can contain a collection of models, although often there is only one model in the store.
The store also contains metadata about a model and information about the instances of the elements and links between elements that make up that model. Metadata contains the types allowed in the model and their relationships.
The store has several data structures that are filled when a model is loaded into the store. This occurs under the following circumstances:
when your domain-specific language is launched, either as an experimental build
when you have deployed your domain-specific language and an end user launches it
when you load a model programmatically into the store
The DomainDataDirectory contains the metadata about the types allowed to be in the model.
The ElementDirectory contains information about each element instance and their links. (The instances in the ElementDirectory must be of types defined in the DomainDataDirectory.)
From the store, you can navigate to the individual items in the store. You can get information about elements or types. You can also do the following tasks:
add items
delete items
modify existing elements and links and their properties
Whenever you modify a store, you must enclose any code that writes to the store in a Transaction. You can cancel all the changes to the store made in a transaction by doing a Rollback of the transaction or by not doing a Commit of the transaction.
The store has a RuleManager that contains functionality to subscribe to rules. The store can also subscribe to events.
The store also has an UndoManager which has members that allow you to undo and redo changes to the store. You generally do not have to create a new instance of a store, although you can and can read a model into it by deserializing a model into the new instance. Often, you get access to the store from the Store property of an element or link in the model. The event arguments of rules and events provide the element or link instance that the rule or event pertains to, and you can use its Store property to access the store and its TransactionManager.
Examples
The following examples show different ways to instantiate a store. When there are dependencies between domain models, as in the third example that follows, the domain models should be specified in order of dependency.
// Create a store with your domain models (classes in the generated
// code derived from Microsoft.VisualStudio.Modeling.DomainModel).
Store store = new Store(typeof(ActivityDomainModel));
// Domain models can be loaded into the store after construction.
// Be sure to call store.Dispose() when you are done with it.
Store store2 = new Store();
Store2.LoadDomainModels(typeof(ActivityDomainModel));
// Multiple domain models can be loaded into the store at once
Store store3 = new Store(typeof(BaseActivityDomainModel), typeof(ExtendedActivityDomainModel));
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
Reference
Microsoft.VisualStudio.Modeling Namespace
Other Resources
[redirect] Domain Model in the Generated API
How to: Create Elements in Code
How to: Create Elements in Code
How to: Set or Get Domain Property Values