Entity Framework Cache Resync Provider
The Resync mechanism of NCache is responsible for keeping data up to date across the cache cluster. In the case of EF caching, if the query data in the cache gets invalidated for any reason (Expiration or Dependency) the Resync mechanism (if enabled) fetches this data from the database and inserts it into the cache automatically. Hence, ensuring efficiency as this data will be retrieved from the cache instead of the database in the future.
Note
This feature is only available in NCache Enterprise.
Therefore, Entity Framework allows the NCache Read-Through provider to be used as a Resync Provider. The Read-Through provider communicates with the data source and retrieves the data from it in case of any cache miss. All you have to do is to add the Resync Provider as Read-Through provider through the NCache Management Center and then specify the resyncProviderName
tag through the Entity Framework Caching config file.
Warning
If the resyncProviderName
tag is not provided in the efcaching.ncconf file, the query will not resync after expiry.
Entity Framework Cache Resync Provider Parameters
The following are the parameters provided while deploying the Entity Framework Cache Resync Provider:
appId
: This will be the unique identifier for theapp-config
tag in efcaching.ncconf file. Through this, the provider will read the required configuration based on the ID given.logLevel
: This determines the log level for the provider. The provider will log exceptions and errors only when it is set to Error (Default). When the level is Debug, both exceptions/errors and other detailed information will be logged. Nothing will be logged if the level is set to Off. The path at which log files will be generated is %NCHOME%\log-files\EfCachingLogs and the path at which the provider-related logs will be generated is %NCHOME%\log-files\EfCachingLogs\EfCachingProviderLogs.
Steps to Deploy Entity Framework Cache Resync Provider
Warning
If the efcaching.ncconf config file is not deployed on the server, the cache will not start.
After installing the NuGet package for Entity Framework Cache, follow the steps below to deploy the Resync Provider as Read-Through provider.
Specify Connection String
First, you need to specify the database connection string by overriding the GetDbConnection
method, which extends the EFReadThruProviderBase
class and IReadThruProvider
interface as explained in the sample code below.
public class EfResyncProvider : EFReadThruProviderBase, IReadThruProvider
{
protected override DbConnection GetDbConnection(IDictionary parameters, string cacheId)
{
// Write your connectionString here
}
}
Deploy Resync Provider through the NCache Management Center
After specifying the connectionString, add the Resync Provider as a Read-through provider via the NCache Management Center. There, you will provide the name for the Entity Framework Cache Resync Provider add the EFResyncProvider
class as a class name, and add parameters for the database connectionString. You can also provide the appId
and logLevel
optional parameters with the Resync Provider.
Note
- Multiple
app-Id
can be provided in the efcaching.ncconf configuration file if you have multiple applications running. - The efcaching.ncconf must be deployed on the server, while configuring your Resync Provider through the NCache Management Center.
Next, to deploy the Resync Provider, you need to select your application's dll along with the Alachisoft.Integrations.EntityFramework.CachingProvider.dll and efcaching.ncconf file, containing the configuration information, and save your changes. Now, your Entity Framework application is ready to be used along with the Resync mechanism.
See Also
Entity Framework Caching Config File
NHibernate
Entity Framework Core Caching