Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 获取内存缓存中的静态记录_Sql Server_Asp.net Mvc_Entity Framework_Memory - Fatal编程技术网

Sql server 获取内存缓存中的静态记录

Sql server 获取内存缓存中的静态记录,sql-server,asp.net-mvc,entity-framework,memory,Sql Server,Asp.net Mvc,Entity Framework,Memory,对于不经常更新的小数据集(如查找值),我希望构建一种方法,将它们缓存在应用程序服务器的内存中,而不是不断查询 将它们保存在数据库中。 我拥有的最佳方法是在我的应用程序中将它们保存在静态字段中: public class MyClass { public static List<UserRoles> userRolesList; } protected void Application_Start() { //some stuff MyEntities db = new M

对于不经常更新的小数据集(如查找值),我希望构建一种方法,将它们缓存在应用程序服务器的内存中,而不是不断查询 将它们保存在数据库中。 我拥有的最佳方法是在我的应用程序中将它们保存在静态字段中:

public class MyClass
{
  public static List<UserRoles> userRolesList;
}
protected void Application_Start()
{
  //some stuff
  MyEntities db = new MyEntities();
  MyClass.userRolesList = db.UserRoles.ToList();
  //...
}
公共类MyClass
{
公共静态列表userRolesList;
}
受保护的无效应用程序\u Start()
{
//一些东西
MyEntities db=新的MyEntities();
MyClass.userRolesList=db.UserRoles.ToList();
//...
}

有更好的方法来实现这个目标吗?

我倾向于同意客户端上的静态变量是存储小信息集(如查找)的最佳位置

对于大型集合,我将使用子句从服务器查询,并避免存储在静态内存中。但是,您可以从服务器获取整个集合,并将其存储在本地缓存中,如独立存储或磁盘上

给你的客户一个编码建议,在你的主应用中放置一个公共结构(ClientData)。(例如WPF/Silverlight)

public partial class App : Application
{
   public struct ClientData
   {
      public static bool IsInitialized = false;
      public static ObservableCollection<string> DataTypes;
      public static Dictionary<int, CategoryType> CategoryLookup;
   }
}
if (App.ClientData.IsInitialized)
{
   DataList.ItemsSource = App.ClientData.CategoryLookup;
}