Как обновить ASP.NET Cache при обновлении данных в базе данных? - PullRequest
4 голосов
/ 07 июня 2011

В настоящее время я использую приведенный ниже код для обновления кэша каждый день в полночь. Это прекрасно работает, но требования изменятся так, что мне нужно будет обновить кеш при изменении элемента в наборе данных. Я понимаю, что существует класс CacheDependency для проверки, изменился ли файл, чтобы обновить кэш, но я не понимаю, как это относится к тому, что я пытаюсь сделать. Может ли кто-нибудь помочь направить меня в правильном направлении для обновления кэша при изменении набора данных? Спасибо.

        try
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["localDb"].ConnectionString);
            DataSet ds = new DataSet();
            if (Cache["ds"] == null)
            {
                conn.Open();
                SqlCommand sqlComm = new SqlCommand("SELECT EmployeeID, NationalIDNumber, ContactID, LoginID, ManagerID, Title, BirthDate, MaritalStatus, Gender FROM HumanResources.Employee", conn);
                SqlDataAdapter adapter = new SqlDataAdapter(sqlComm);
                adapter.Fill(ds);
                Cache.Insert("ds", ds, null, DateTime.Today.AddDays(1), TimeSpan.Zero);
                conn.Close();
            }
            GridViewEmployees.DataSource = (DataSet)Cache["ds"];
            GridViewEmployees.DataBind();
        }
        catch (Exception)
        {
            throw;
        }

1 Ответ

5 голосов
/ 07 июня 2011

DotNet 2.0+ подход

Полагаю, вы слышали и читали о SqlCacheDependency классе, не так ли?Ну, если у вас нет, я предлагаю вам сделать.Это вызовет улыбку на вашем лице.;)

Статья MSDN .

Подход DotNet 1.x

В старые времена (до .net 2.0 и до SQL 2005) существовалитакже трюк с обычным классом CacheDependency таким образом, что вы создали триггер для вставок / обновлений в таблице, которая нуждалась в этом, который (пере) сохранил пустой файл (чтобы он был настолько быстрым, насколько это возможно) в некоторой папке ивы зависели от своего кеша от этого конкретного файла, поэтому ваш кеш стал недействительным при изменении данных.Как я слышал, это работало нормально.

MSDN Magazine статья 2003 года об этом .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...