对于不经常更新的小型数据集,例如查找值,我想构建一种在应用服务器的内存中缓存它们的方法,而不是经常查询 他们在数据库中。 我拥有的最佳方法是将它们保存在我的应用程序的静态字段中:
public class MyClass
{
public static List<UserRoles> userRolesList;
}
protected void Application_Start()
{
//some stuff
MyEntities db = new MyEntities();
MyClass.userRolesList = db.UserRoles.ToList();
//...
}
目标是否有更好的方法?
答案 0 :(得分:0)
我倾向于同意客户端上的静态变量是存储小信息集(例如查找)的最佳位置。
对于大型集合,我将从服务器查询子句并避免存储在静态内存中。但是,您可以从服务器获取整个集合并存储在本地缓存中,例如隔离存储或磁盘上。
为您的客户提供一个编码建议,在您的主应用中放置一个公共结构(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;
}