• Webinars
  • Docs
  • Download
  • Blogs
  • Contact Us
Show / Hide Table of Contents
  • Programmer's Guide
  • Client Side API Programming
    • Setting Up Development Environment
    • Basic Cache Operations
      • Initialize Cache
      • Add Data to Cache
      • Update Data in Cache
      • Fetch Data From Cache
      • Remove Data From Cache
      • Dispose Cache
    • Bulk Operations
      • Adding Collection to Cache
      • Updating Collection in Cache
      • Retrieving Collection from Cache
      • Removing Collection from Cache
      • Deleting Collection from Cache
    • Asynchronous Operations
      • Using Asynchronous Operations
      • Using Asynchronous Operations with Callback Methods
    • Groups and Subgroups
      • Adding/Updating Data Group in Cache
      • Retrieving Data Group from Cache
      • Removing Data Group from Cache
    • Tagging Data in NCache
      • Creating Tags
      • Adding Items with Tags
      • Retrieving Previously Tagged Data
      • Removing Tagged Items from Cache
    • Named Tags
    • Data Expiration Strategies
      • Using Absolute Expiration
      • Using Sliding Expiration
    • Cache Dependencies
      • Key Dependency
      • File Dependency
      • Notification based Dependencies
        • Database Dependency using SQL Server
        • Database Dependency using Oracle
      • Polling Based Dependency
      • Custom Data Source Dependency
      • Multiple Cache Sync Dependency
      • Aggregate Dependency
      • Add Dependency to Existing Item
      • Using CLR Procedures to Call NCache
    • Locking Data in NCache
      • Locking Items in Cache (Pessimistic Locking)
      • Locking Items with Cache Item Versioning (Optimistic Locking)
    • SQL Reference for NCache
      • SQL Syntax
      • Querying Samples for Operators
      • Querying Data in NCache
      • NCache Language Integrated Query (LINQ)
        • Using LINQ in NCache
        • Configuring LINQPad for NCache
        • Querying NCache Data in LINQPad
    • Event Notifications
      • Cache Level Event Notifications
      • Item Level Event Notifications
      • Custom Event Notifications
    • Publish/Subscribe (Pub/Sub) in NCache
      • Pub/Sub Topics
      • Managing Topics
      • Pub/Sub Messages
        • Message Behavior and Properties
        • Creating a Message
      • Publish Messages to Topic
      • Subscribe for Topic Messages
      • Monitoring Pub/Sub Topics
    • Continuous Query
    • Using Streams in NCache
      • Opening with Stream Modes
      • Adding and Updating Data with Streams
      • Retrieving Data from Streams
      • Closing a Stream
    • Security and Encryption
      • NCache Security
      • NCache Data Encryption
    • Data Compression
    • NCache Management API
  • Server Side API Programming
    • Cache Startup Loader
      • Components of Cache Startup Loader
      • Sample Implementation of ICacheLoader on Single Node
      • Sample Implementation of ICacheLoader with Distribution Hints
    • Data Source Providers (Backing Source)
      • Read-Through Caching
        • Configure Read-Through Provider
        • Using Read-Through with Cache Operations
      • Write-Through Caching
        • Configuring Write-Through Provider
        • Using Write-Through with Basic Operations
        • Using Write-Behind with Basic Operations
        • Using Write-Behind with Bulk Operations
        • Using Write-Behind with Async Operations
        • Monitor Write-Through Counters
    • Custom Dependency
      • Sample Implementation of Custom Dependency
      • Sample Usage of Custom Dependency
    • WAN Replication through Bridge
      • Bridge Configurations
      • Implementing Bridge Conflict Resolver
    • Entry Processor
      • Sample Implementation of IEntryProcessor Interface
      • Sample Usage of EntryProcessor
    • MapReduce
      • Sample Implementation of MapReduce Interfaces
      • Sample Usage of MapReduce
    • Aggregator
      • Sample Implementation of IValueExtractor Interface
      • Sample Implementation of IAggregator Interface
      • Sample Usage of Aggregator
    • Dynamic Compact Serialization
  • Client Side ASP.NET Features
    • ASP.NET
      • ASP.NET Session State Provider for NCache
      • Multi-Region ASP.NET Session State Provider for NCache
    • ASP.NET Core
      • Session Storage in ASP.NET Core
        • Configure NCache ASP.NET Core Session Provider
        • Configure ASP.NET Core Sessions with NCache IDistributedCache Provider
      • Multi-Region ASP.NET Core Session Provider for NCache
      • Object Caching in ASP.NET Core
    • ASP.NET SignalR
      • Using NCache Extension for SignalR
    • View State Caching
      • Configuring and Using Content Optimization
      • Group View State with Sessions
      • Limit View State Caching
      • Perform Page Level Grouping for View State
    • ASP.NET Output Cache
      • Configure ASP.NET Output Caching
      • Using ASP.NET Output Cache with Custom Hooks
  • Client Side Third Party Integrations
    • Migrating AppFabric to NCache
      • AppFabric API vs. NCache API
    • NHibernate
      • NCache as NHibernate Second Level Cache
      • Using NHibernate Query Caching
      • Configuring Database Synchronization with NHibernate
    • Entity Framework Caching Integration
      • NCache as Entity Framework Second Level Cache
      • Entity Framework Caching Config File
    • Entity Framework Core Caching
      • Installing NCache Entity Framework Core Provider
      • Configuring NCache Entity Framework Core Provider
      • Using NCache Entity Framework Core Provider
        • Caching Options for EF Core Provider
        • LINQ APIs for EF Core Provider
        • Cache Only APIs for EF Core Provider
        • Query Deferred APIs for EF Core Provider
      • Logging in NCache Entity Framework Core Provider
    • Memcached
      • NCache Memcached Gateway Approach
      • Memcached Client Plugin for .NET
    • Debug NCache Providers in Visual Studio
    • NCache for Visual Studio Extension

Using NCache as Entity Framework Second Level Cache

Integration without any Code Change

NCache custom Entity Framework ADO.NET provider can be integrated in the application without any code change. Simply modify configuration files and specify NCache Entity Framework Caching Provider as second Level Cache provider.

Prerequisites

  1. Any Entity Framework application. The sample application for Entity Framework Caching from NCache sample applications can also be used from the following path: %NCHOME%/samples/dotnet/EntityFramework.

  2. Microsoft Visual Studio 2010 for Entity Framework 3.5 and 4.0 and Microsoft Visual Studio 2012-2013 for Entity Framework 6.0 and 6.1.

  3. Database Tool (e.g. MS SQL SERVER, ORACLE)

Steps required to enable NCache as Second Level Cache Provider in Entity Framework application are as follows:

Reference Assembly

To utilize the Provider, include the following namespace in your application: Alachisoft.Integrations.EntityFramework.CachingProvider found in %NCHOME%/integration/MSEntityFramework.

Modifying Application or Web Configurations

App.config or Web.config which is generated on adding ADO.NET Entity Data Model in Entity Framework application, requires following changes:

Specify Provider Invariant Name

  • Provider invariant name is specified in the connection string of application or web configuration file:

  • Entity Framework 3.5-4.0

<connectionStrings>
     <add name="NorthwindEntities" connectionString="metadata=res://*/NorthwindCustomerModel.csdl |res://*/NorthwindCustomerModel.ssdl |res://*/NorthwindCustomerModel.msl; provider=Alachisoft.Integrations.EntityFramework.CachingProvider; provider connection string=&quot;
     wrappedProvider=System.Data.SqlClient; Data Source=localhost;Initial Catalog=Northwind;user id= userid; password=password; MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient"/>
</connectionStrings>
  • Add the provider factory for initialization of NCache Entity Framework Provider. The invariant attribute should be the same as the provider name in connection string.
<DbProviderFactories>
    <add name="EF Caching Data Provider" invariant="Alachisoft.Integrations.EntityFramework.CachingProvider" description="Caching Provider Wrapper" type="Alachisoft.NCache.Integrations.EntityFramework.EFCachingProviderFactory, Alachisoft.Integrations.EntityFramework.CachingProvider, Version=x.x.x.x,Culture=neutral, PublicKeyToken=cff5926ed6a53769"/>
</DbProviderFactories>
Note

Replace Version=x.x.x.x with the actual NCache version that you have installed. For example, Version=4.9.0.0.

Entity Framework 6.0

Overwrite the invariantName and type configurations to specify NCache Entity Framework Provider as shown below:

<entityFramework>
    <providers>
      <provider invariantName="EFCachingProviderServices" type="Alachisoft.NCache.Integrations.EntityFramework.EFCachingProviderServices,
Alachisoft.Integrations.EntityFramework.CachingProvider" />
    </providers>
</entityFramework>

Entity Framework 6.1

Add an interceptor in <provider> section in the application (or web) configuration file:

<entityFramework>
    <providers>
        <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
    <interceptors>
        <interceptor type="Alachisoft.NCache.Integrations.EntityFramework.Caching.EFCommandInterceptor, Alachisoft.Integrations.EntityFramework.CachingProvider"/>
    </interceptors>
</entityFramework>

Add Application ID to appSettings

The following information should be added in <appSettings> of App.config or Web.config.

Note

These settings are independent of Entity Framework version.

<appSettings>
    <add key="app-id" value="EFCachingDemo"/>
    <add key="logging-level" value="Debug"/>
</appSettings>
  • app-id: This will be the identifier for current application. This ID will be used to read configuration from efcaching.ncconf. NCache Entity Framework Caching provider reads the required information from efcaching.ncconf on the basis of ID given in App.config or Web.config file of your application.

  • logging-level: Determines the logging level for application. The provider will log exceptions and errors only when level is set to Error. When the level is set to Debug, both exceptions/errors and other detailed information will be logged. Nothing will be logged if the level is set to Off (default). Path at which log files will be generated is %NCHOME%/log-files/efcaching-logs/.

Note

App-id of efcaching.ncconf should be the same as in application (App.config) in order to avoid an error. Application should be restarted after above changes are made.

Alternative method through Programming

Apart from specifying connection string in App.config or Web.config, the connection can also be specified while creating ObjectContext or EntityConnection. While creating a connection string programmatically, the wrapper information must be included in a connection string. Here is how the connection string can be created and ObjectContext or EntityConnection can be initialized.

try
{
    SqlConnectionStringBuilder sqlConnBuilder = new SqlConnectionStringBuilder();

    sqlConnBuilder.DataSource = "localhost";
    sqlConnBuilder.InitialCatalog = "EFTestDB";
    sqlConnBuilder.IntegratedSecurity = true;

    string conString = sqlConnBuilder.ToString();

    EntityConnectionStringBuilder efConnBuilder = new EntityConnectionStringBuilder();

    efConnBuilder.Provider = "EFCachingProvider";
    efConnBuilder.ProviderConnectionString = @"wrappedProvider=System.Data.SqlClient;" + conString;
    efConnBuilder.Metadata = "res:// /NorthwindCustomerModel.csdl|res:" + "// /NorthwindCustomerModel.ssdl|res:" +"// /NorthwindCustomerModel.msl;";

    EntityConnection connection = new EntityConnection(efConnBuilder.ToString());
}
catch (Exception ex)
{  
    // handle exception
}
Note

The application will need to be rebuilt for effectively applying the above changes.

Back to top Copyright © 2017 Alachisoft