我需要实现功能,当有人登录时,会存储用户对象(包含一些其他导航属性)
我想在获取与用户相关的信息时访问此信息,以便我无需点击数据库,例如
用户有通知,所以如果我必须查询我想要这样的
Announcements announcements = Storage.User.Announcements;
var result = from m in announcements
where m.DueDate== 'someting'
我有很多与User相关的功能,并希望在不从DB获取的情况下持久化和查询记录
当用户登出'Storage.User中的值时应该清理
我已经实现了Singleton模式,但它不能正常工作
PL建议任何模式或练习
答案 0 :(得分:0)
Singletone在这里不起作用,因为无论何时发出新请求,您的控制器(以及控制器生成的对象)都会重新生成。记住,HTTP不保持状态。
要保持,您可以将对象存储在会话中。
登录时,请执行:
HttpContext.Current.Session["the-session-key"] = YourObject
当您需要访问Object时,请执行:
YourObjectType yourObject = (YourObjectType)HttpContext.Current.Session["the-session-key"]
要清除会话,请执行以下操作:
HttpContext.Current.Session.Clear();
如果您在控制器内部进行操作,则可以直接访问控制器中Session
的{{1}}属性。
例如,在Controller中,您可以执行以下操作:
Session