• 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

Entity Framework Cache Provider

Entity Framework provides abstraction from the underlying relational data stored in a database and presents its conceptual schema to the application, preventing the need to write database persistence code.

Entity Framework can be seen in most of the high transaction applications where scalability and performance cannot be compromised. However, in such critical cases, the database quickly becomes a bottleneck as the database tier does not support adding on more servers. To achieve this scalability, NCache provides a pluggable in-memory cache provider to act as a second level cache and cache query results.

The upsides to using NCache as a Second Level Cache in Entity Framework applications are:

  • No Code Change: NCache Entity Framework Caching Provider can be integrated in application without any code change.
  • Better Performance: NCache custom provider intercepts all the database queries calls and caches the query result sets. This increases the performance of applications by avoiding expensive databases trips.
  • Application Scalability: NCache provides a reliable and shared memory resource for storage. It gives the ability for sharing transactional context between different entities in any entity framework application.

The caching provider can perform various functions, such as:

  • Managing connections, commands, transactions and data readers.
  • Monitoring queries and commands before they execute.

The following figure shows how and where NCache Entity Framework Provider plugs into an Entity Framework application.

Entity Framework Caching Integration Modes

There are two execution modes for NCache Entity Framework Caching Provider:

  • Analysis mode
  • Caching mode

These modes are mutually exclusive, so NCache Entity Framework Caching Provider cannot execute in both modes at the same time. It can either be in "Caching" mode or in "Analysis" mode.

Note

Recommendation: First execute the entity framework application within Analysis mode of NCache Entity Framework Caching Provider.

  • Analysis Mode

Analysis mode is a pass-through mode; no caching is done at this mode. This mode provides features that are listed as follows:

  • Monitoring Query: Monitoring the number of times each query is executed by Entity Framework application. This allows the user to determine which queries are most frequent and the best candidates for caching.

  • Generate Reports: It generates reports for queries with proper syntax and also arranging them in descending order. That allows the user to choose suitable queries and copies them for caching.

  <analysis-report>
<!--Call-count = 21-->
 <query query-text="" ["SELECT FROM Products"] |
        [stored-procedure-name = ""]
        caching = "true"
        expiration-type="absolute" |
        sliding = ""
        expiration-time="180"
        dbsyncdependency = "true"/>
</analysis-report>
  • Caching Mode

This mode is basically designed for the actual use of NCache in Entity Framework applications. At this point, queries and their result sets are cached. Caching mode only entertains those queries which are given in configuration file i.e. efcaching.ncconf.

NCache Supported Features with Entity Framework

While NCache acts as a second level cache for EF applications, it provides the following features as well, which can be specified through the Entity Framework Caching config file:

  1. Cache synchronization with database: In some cases, some data that is in the cache may be changed in the database without the application's involvement. Hence, you can specify the corresponding classes for database synchronization feature of NCache. This allows NCache to connect with the database, monitor data changes, and update the cache automatically to ensure that data in the cache is always synchronized with the database. NCache provides SqlDependency for SQL Server, OracleDependency for Oracle, and DbDependency for any OLEDB compliant databases.

  2. Absolute Expiration: Absolute expiration is specified separately for each cached item and is a DateTime value which specifies when NCache should automatically expire the item. For Entity Framework, NCache asks you to specify an "interval" value and then uses Now() + interval formula to calculate the date-time value for absolute expiration.

  3. Sliding Expiration: Sliding expiration is specified separately for each cached item and is an interval value. NCache expires the cached item if it has neither been fetched nor updated for this interval.

  4. Dynamic Compact Serialization: NCache allows you to register your Entity Framework classes for Compact Serialization and generates serialization code when your application connects to the cache. NCache dynamically compiles this code in-memory and uses it for serialization, thereby increasing the serialization performance.

In This Section

Using NCache as Entity Framework Second Level Cache
Explains how to configure and use NCache as Entity Framework second level cache.

Entity Framework-Caching Configuration File
Explains the changes required in EFcaching.ncconf to run the Entity Framework application in NCache.

Back to top Copyright © 2017 Alachisoft