Master data source in EPiServer.

Namespace:  EPiServer
Assembly:  EPiServer (in EPiServer.dll) Version: 6.0.530.0


public sealed class DataFactory : PageStoreBase, 


DataFactory is responsible for all page-related activities, including loading, saving, deleting, caching, moving, etc. The class also has events, which you can use to extend the functionality of EPiServer. For example, if you want to send an e-mail whenever a page is published, use one of the [!:EPiServer.DataFactory.PublishingPage] or [!:EPiServer.DataFactory.PublishedPage] events exposed by DataFactory. You can even cancel events, adding another level of authorization.

DataFactory has full support for redirecting a request to a remote EPiServer site, the RemoteSite property on PageReference specifies the short name for the remote site to operate against. This site must be configured in Admin mode prior to usage.

You can also monitor how the page cache performs by checking the different hit counters, like PageFetchDatabaseReads, ListingFetchDatabaseReads, PageFetchCacheHits etc.

Note: EPiServer.DataFactory.Instance is the preferred way to access the DataFactory class from your code.

Do not instantiate your own DataFactory classes if you are not certain that you have to. A DataFactory object not created by EPiServer will not use the cache, and the performance will be significantly lower.

Note: The DataFactory class is a sealed (NotInheritable in VB.NET) class, so it is not possible to use it as a base class for other classes.


The following code example demonstrates the usage of DataFactory to delete a page.
EPiServer.DataFactory.Instance.Delete(new PageReference(1203), false);

The following example shows how to use the global DataFactory instance to fetch a page with a given ID on a remote server. You must configure the site in Admin mode under "Remote sites".

PageData oPage = EPiServer.DataFactory.Instance.GetPage(new PageReference(1234, "intranet"));
The following code example demonstrates how to use the built-in statistics properties.
// Pages
int PagesFromCache  = EPiServer.DataFactory.Instance.PageFetchCacheHits;
int PagesFromDB     = EPiServer.DataFactory.Instance.PageFetchDatabaseReads;
int TotalPages      = EPiServer.DataFactory.Instance.PageFetchCount;

double Ratio = Math.Round((double)PagesFromCache / (double)TotalPages * 100, 2);

// Listings
int ListingsFromCache   = EPiServer.DataFactory.Instance.ListingFetchCacheHits;
int ListingsFromDB      = EPiServer.DataFactory.Instance.ListingFetchDatabaseReads;
int TotalListings       = EPiServer.DataFactory.Instance.ListingFetchCount;

double ListingsRatio    = Math.Round((double)ListingsFromCache / (double)TotalListings * 100, 2);
This following code example shows how to use the global DataFactory instance to fetch a page with a given ID.
PageData oPage = EPiServer.DataFactory.Instance.GetPage(new PageReference(1234));

Inheritance Hierarchy


See Also