2012-02-20 4 views
2

У меня есть раскрывающийся список, который я заполняю набором результатов вызова Entity Framework для базы данных SQL Server. В настоящее время в этом вызове возвращено 20 записей, и я думаю об использовании кеширования. Раньше я никогда не настраивал кеширование для определенного элемента управления, может кто-то указать мне на учебник. Является ли это также излишним, для этого небольшого набора данных?Кэширование результата SQL Call

+0

ASP.NET? WinForms? WPF? – BrokenGlass

+0

http://deanhume.com/Home/BlogPost/object-caching----net-4/37 достойная статья – Joe

ответ

3

Если это ASP.NET, то самым простым способом сделать кэширование будет использование объекта HttpContext.Current.Cache. В вашем коде это будет работать так. Вы можете найти more information on the Cache class on MSDN.

if (HttpContext.Current.Cache.Get("ef_results") == null) 
{ 
    var results = null; // todo: get results from EF 
    HttpContext.Current.Cache.Add("ef_results", // cache key 
            results, // cache value 
            null, // dependencies 
            System.Web.Caching.Cache.NoAbsoluteExpiration, // absolute expiration 
            TimeSpan.FromMinutes(30)); // sliding expiration 
} 

myDropDown.DataSource = HttpContext.Current.Cache.Get("ef_results"); 

Если это WPF/WinForms, то самый простой способ будет просто добавить статическое поле в классе и «кэш» результаты вашего запроса EF в этом статическом поле, используя ту же логику, что и выше.

+0

+1 Если результаты запроса не должны быть распределены/аннулированы разными узлами, это приведет вас из отверстия. –

+0

Отличный материал здесь –

+0

Опасайтесь, если вы используете NLB - и хотите обновить кеш на www-приложении, потому что он будет обновляться только на том сервере, на котором NLB перенаправляет вас. Есть возможность перезапустить IIS или дождаться скользящего истечения срока действия и обновить кеш на всех www-приложениях. – Svmurvj

0

Если вам нужно распространять кеш среди фермы, вы можете рассмотреть возможность использования кеша второго уровня.

EF 2nd Level Cache

Смежные вопросы