Configure Dynamic Data Store (11.3-11.x)
Describes how to configure the Dynamic Data Store (11.3-11.x)
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 theSystem.Type.GetType
method call fails for types stored in a store. The resolution is made by first removing the version information from the type string and callingType.GetType
again. If this fails, then the assembly information is removed from the type string andType.GetType
is called again. If the type still is not resolved, an exception occurs. If you set this value to false, assembly redirects resolve this type in the configuration file.autoRemapStores
can be true (default) or false.
If you set this to true, then the Dynamic Data Store automatically remaps .NET classes decorated with theEPiServerDataStoreAttribute
attribute and where you set theAutomaticallyRemapStore
property to true, to their respective stores when the class and store mappings are no longer aligned. If you set this value to false, there is no automatic remapping for any class.
- The
<providers>
elements contain child<add>
elements for each Dynamic Data Store provider available.
Currently, only a Microsoft SQL Server provider is available. - The
<cache>
element contains a single 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).
Change configuration programmatically
You also can modify some of the Dynamic Data Store configuration programmatically through the EPiServer.Data.Dynamic.DynamicDataStoreOptions
class. Do this during the configuration phase of the site initialization by creating an initialization module that implements the IConfigurableModule
interface and modify the options in the ConfigureContainer
method.
[InitializableModule]
[ModuleDependency(typeof (DataInitialization))]
public class DynamicDataStoreConfiguration: IConfigurableModule {
public void ConfigureContainer(ServiceConfigurationContext context) {
context.Services.Configure< DataStoreOptions>(o => {
o.AutoResolveTypes = false;
o.AutoRemapStores = false;
});
}
public void Initialize(InitializationEngine context) {}
public void Uninitialize(InitializationEngine context) {}
}
Recommendations
- Create or obtain instances of the
DynamicDataStore
on the stack, use them, and then discard them.Note
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 aGuid
property called Id on the objects you want 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).
See also: episerver.datastore
Updated 6 months ago