Note
This content applies to Optimizely Content Management System (CMS) versions 10 through 11.2.
You have the following options to configure through the application’s configuration file:
The \<episerver.dataStore> element has one child element called <dataStore>.
The \<dataStore> element has the child elements \<providers> and \<cache> and the following attributes:
`
defaultProvider
` is the name of the Dynamic Data Store provider to use. The name should correspond to an element with the same name in the <providers> element.`
autoResolveType
` can be true (default) or false. If set to **true** then the Dynamic Data Store tries to resolve .NET Types if the `System.Type.GetType
` method call fails for types stored in a store. The resolution is done by first removing the version information from the type string and calling `Type.GetType
` again. If this fails, then the assembly information is removed from the type string and `Type.GetType
` is called again. If the `Type
` still is not resolved, an exception is thrown. If this value is set to **false**, type resolving is done through assembly redirects in the configuration file.`
autoRemapStores
` can be true (default) or false. If this is set to **true**, then the Dynamic Data Store automatically remaps all .NET classes decorated with the `EPiServerDataStoreAttribute
` attribute and where the AutomaticallyRemapStore property is set to true, to their respective stores when the Class and store mappings are no longer aligned. If this value is set to **false**, no automatic remapping is done for any class.
The \<providers> elements contains a child \<add> elements for each Dynamic Data Store provider available. Currently, only a providers for Microsoft SQL Server is available.
The \<cache> element contains a single \<providers> child element and the following attributes:
`
defaultProvider
` is the name of the Dynamic Data Store cache provider to use. The name should correspond to an element with the same name in the <cache> <providers> element.
The \<cache> \<providers> elements contain a child \<add> elements for each Dynamic Data Store cache provider available. Currently, providers are available for HTTP Runtime and Null (no caching).
## Recommendations
Create/obtain instances of the `
DynamicDataStore
` on the stack, use them and then discard them. Note that the Dynamic Data Store **_is not_** thread safe and if an instance is used and shared between multiple threads, it should be protected with thread-locking techniques.Implement `
EPiServer.Data.IDynamicData
` or a `Guid
` property called Id on your objects to be saved when you want to control the external identity of your objects.Use the same instance of a Dynamic Data Store to load and then update a POCO object (object without identity).