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;
}