An open API service indexing awesome lists of open source software.

https://github.com/moozzyk/EFCache

Second Level Cache for Entity Framework 6.1
https://github.com/moozzyk/EFCache

c-sharp caching entity-framework hacktoberfest

Last synced: 7 months ago
JSON representation

Second Level Cache for Entity Framework 6.1

Awesome Lists containing this project

README

          

# Second Level Cache for Entity Framework 6.1+

Entity Framework does not currently support caching of query results. A sample EF Caching provider is available for Entity Framework version 5 and earlier but due to changes to the provider model this sample provider does not work with Entity Framework 6 and newer. This project is filling the gap by enabling caching of query results for Entity Framework 6.1+ applications.

#### This project was moved from https://efcache.codeplex.com

You may still find some useful information there:

- Old discussion board - https://efcache.codeplex.com/discussions
- Issues - https://efcache.codeplex.com/workitem/list/basic

# How to get it

You can get it from NuGet - just install the [EntityFramework.Cache NuGet package](http://www.nuget.org/packages/EntityFramework.Cache)

# How to use it

The project uses a combination of a wrapping provider and a transaction interceptor. A simple [InMemoryCache](https://github.com/moozzyk/EFCache/blob/master/src/EFCache/InMemoryCache.cs) is included in the project. To use it you need first configure EF using code based configuration. Here is an example of how such a configuration looks like.

```C#
public class Configuration : DbConfiguration
{
public Configuration()
{
var transactionHandler = new CacheTransactionHandler(new InMemoryCache());

AddInterceptor(transactionHandler);

var cachingPolicy = new CachingPolicy();

Loaded +=
(sender, args) => args.ReplaceService(
(s, _) => new CachingProviderServices(s, transactionHandler,
cachingPolicy));
}
}
```

Starting with version 1.1.1 you can also use the new static `EntityFrameworkCache.Initialize()` method to configure EF to use EFCache. The `Initialize` method should be invoked at app startup (before EF is used) - e.g. in the application static constructor. To initialize EFCache with the built-in [InMemoryCache](https://github.com/moozzyk/EFCache/blob/master/src/EFCache/InMemoryCache.cs) you can use the following code:

```C#
EntityFrameworkCache.Initialize(new InMemoryCache());
```

You can find more details in my [blogpost](http://blog.3d-logic.com/2014/03/20/second-level-cache-for-ef-6-1/)