TargetProcess Development Tricks: Clear NHiberante cache using ASP.NET handler (.ashx) | Targetprocess - Visual management software

10 years ago

TargetProcess Development Tricks: Clear NHiberante cache using ASP.NET handler (.ashx)

Sometimes we need to clear cache of NHibernate. For example when the database was changed without using NHibernate. We have created the corresponding handler in web application ClearCache.ashx with the following code:

<%@ WebHandler Language="C#" Class="ClearCache" %>
using System;
using System.Collections;
using System.Web;
using NHibernate;

public class ClearCache : IHttpHandler
{
  public void ProcessRequest(HttpContext context)
  {
      context.Response.ContentType = "text/plain";

      //Need to retrieve ISession using your NHibernate session provider. In my case it is done in the following way
      ISession session = Portal.Instance.GetCurrentSession();

      DoCacheClearing(session);

      context.Response.Write("Done");
  }

  public void DoCacheClearing(ISession session)
  {
      ISessionFactory factory = session.SessionFactory;

      factory.EvictQueries();

      ICollection types = factory.GetAllClassMetadata().Keys;

      foreach (Type type in types)
          factory.Evict(type);

      foreach (string role in factory.GetAllCollectionMetadata().Keys)
          factory.EvictCollection(role);
  }


  public bool IsReusable { get { return false; } }

}

You can subscribe to our monthly newsletter here:

Thank you!

Сheck out latest blog posts:

Get Started for free

Manage complex work, projects and products with Targetprocess

Enter your email
By clicking "Continue", you acknowledge and agree that we will process your personal data in accordance with our Service Privacy Policy and Terms of Service.

We’ve sent you a confirmation e-mail — please, go check it.

Live product demo

With our product specialist Ksenia