0

我有一个这样的模型

public class School{
   public int Id {get;set;}
   public string Name {get;set;}

   static private IEnumerable<School> school;
   static public IEnumerable<School> Schools(ContextDb context){
      if(school != null)
         return school;

      return(school = context.Schools.ToList());
   }
}

现在我有一个使用 ajax 将数据插入表中的页面。问题是当弹出窗口关闭时,我会再次重新生成 Academy.Schools 但由于“学校”变量不为空(或已缓存),它将返回以前的数据而不是刷新的数据(带有新添加的记录。

话虽如此,我如何清空该私有变量,以便触发“return(school = ..);” 在课堂上排队?

谢谢!!

4

1 回答 1

1

您的模型设计非常奇怪(根据给定的信息,很难提供更好的模型,是某种 ActiveRecord 模式吗?),但是对于当前的设计,您需要一种清空“缓存”的新方法,例如设置schoolnull

public class School{
   public int Id {get;set;}
   public string Name {get;set;}

   static private IEnumerable<School> school;
   static public IEnumerable<School> Schools(ContextDb context){
      if(school != null)
         return school;

      return(school = context.Schools.ToList());
   }

   public static void InvalidateSchools()
   { 
       school = null;
   }
}

调用School.InvalidateSchools后续调用School.Schools后将返回新数据。

于 2012-07-19T04:54:56.943 回答