Click here to Skip to main content
15,897,891 members
Articles / Programming Languages / C# 4.0

Entity Framework - Second Level Caching with DbContext

Rate me:
Please Sign up or sign in to vote.
4.75/5 (13 votes)
6 Aug 2012CPOL6 min read 105.6K   2.6K   48  
How to enable second level caching in the Entity Framework when using DbContext.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SecondLevelCaching.Data;
using SecondLevelCaching.Data.Models;
using SecondLevelCachingExample.Models;

namespace SecondLevelCachingExample.Controllers
{
    public class HomeController : Controller
    {
        private readonly IDbContext dataContext;

        public HomeController(IDbContext context)
        {
            this.dataContext = context;
        }

        public ActionResult Index()
        {
            var model = GetHomeModel(string.Empty);
            return View(model);
        }

        [HttpPost]
        public ActionResult Index(string searchTerm)
        {
            var model = GetHomeModel(searchTerm);
            return View("Index", model);
        }

        private HomeViewModel GetHomeModel(string searchTerm)
        {
            var query = dataContext.Table<Customer>();
            if (!string.IsNullOrEmpty(searchTerm))
                query = from c in query
                        where c.ContactName.Contains(searchTerm)
                        select c;

            var customerList = (from c in query
                                orderby c.ContactName
                                select new CustomerModel
                                {
                                    Id = c.CustomerID,
                                    Name = c.ContactName
                                })
                                .ToList();

            var model = new HomeViewModel(customerList,
                EntityCache.Instance.CacheHits,
                EntityCache.Instance.CacheMisses,
                EntityCache.Instance.CacheItemAdds);

            return model;
        }
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Technical Lead
United Kingdom United Kingdom
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions