Кэширование данных .NET / MVC2 с использованием Entity Data Models - PullRequest
1 голос
/ 14 сентября 2010

У меня странная проблема с кэшированием, и я считаю, что это может быть связано с тем, что я использую модель данных сущностей в качестве источника данных.

Проблема заключается в том, что я могу обновить базу данных напрямую иэто не отражается на реальном сайте, пока я не опубликую проект.Данные отображаются правильно при локальном просмотре проекта.

Странно то, что они некорректны только во внешнем интерфейсе.Если я просматриваю запись через CMS, она показывает правильно.

Какой-то исходный код:

// *** CMS CONTROLLER ***
[HandleError]
public class SiteManagerController : Controller
{
    static DataModel DB = new DataModel();
    // via CMS Controller    
    // CMS - Get the data *** PULLS DATA CORRECTLY
        public ActionResult Content()
        {
            List<SiteContent> viewData = DB.SiteContents.OrderBy(c => c.Title).ToList();
           return View(viewData);
        }

   // via CMS Controller
   // CMS - Update logic
        [HttpPost]
        [ValidateInput(false)]
        public ActionResult ContentEdit(int ID, FormCollection formValues)
        {
            SiteContent siteContent = DB.SiteContents.Single(c => c.ID == ID);
            try
            {
                UpdateModel<SiteContent>(siteContent);
                DB.SaveChanges();
                return RedirectToAction("Content");
            }
            catch
            {
                throw;
            }
        }
  }

       // *** HOME CONTROLLER ***
       [HandleError]
       public class HomeController : Controller
       {
           static DataModel DB = new DataModel();
            [System.Web.Mvc.OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
            public ActionResult Index(string strSlug)
            {
                data = DietCenterDB.SiteContents.Single(c => c.Slug == strSlug);

                return View(data);
            }

       }

* ОБНОВЛЕНИЕ * Похоже, что есть какой-то таймерзадержка, связанная с этой проблемой.Если я обновляю CMS / базу данных, все работает правильно через 15-20 минут.Возможно, некоторый объект, связанный с доступом к внешним данным, должен получить тайм-аут или истечь, чтобы получить новый контент?

* ОБНОВЛЕНИЕ № 2 * Кажется, что это только поля varchar / textкоторые не обновляются должным образом.Если я изменяю поле int, оно корректно обновляется, и информация меняется на каждой странице.

1 Ответ

1 голос
/ 14 сентября 2010

Где создается экземпляр вашего объекта DB и какова его область действия?Вы не должны пытаться кэшировать этот объект где-либо;создайте новый для каждого запроса и позвольте ему быть GC'ed.Это может быть источником вашей проблемы, из небольшого фрагмента кода здесь.

...