Asp.net mvc 3 存储一个对象值,如果该值在MVC3应用程序中发生更改,则更新该值

Asp.net mvc 3 存储一个对象值,如果该值在MVC3应用程序中发生更改,则更新该值,asp.net-mvc-3,design-patterns,entity-framework-4,session-state,Asp.net Mvc 3,Design Patterns,Entity Framework 4,Session State,我需要实现在任何人登录时存储用户对象(其中包含一些其他导航属性)的功能 我想在获取与用户相关的信息时访问这些信息,这样我就不需要访问数据库 用户有公告,所以如果我必须查询,我希望这样 Announcements announcements = Storage.User.Announcements; var result = from m in announcements where m.DueDate== 'someting' 我有很多与用户

我需要实现在任何人登录时存储用户对象(其中包含一些其他导航属性)的功能

我想在获取与用户相关的信息时访问这些信息,这样我就不需要访问数据库

用户有公告,所以如果我必须查询,我希望这样

    Announcements announcements = Storage.User.Announcements;
    var result = from m in announcements 
                 where m.DueDate== 'someting'
我有很多与用户相关的功能,希望在不从数据库获取数据的情况下持久化和查询记录

当用户从存储中“注销”该值时。用户应清理

我已经实现了Singleton模式,但它不起作用


请建议任何模式或实践

单音在这里都不起作用,因为每当发出新请求时,您的控制器(以及控制器生成的对象)都会重新生成。记住,HTTP不保持状态

要持久化,可以将对象存储在会话中

登录时,请执行以下操作:

HttpContext.Current.Session["the-session-key"] = YourObject
需要访问对象时,请执行以下操作:

YourObjectType yourObject = (YourObjectType)HttpContext.Current.Session["the-session-key"]
要清除会话,请执行以下操作:

HttpContext.Current.Session.Clear();
如果您是在控制器内执行此操作,则可以使用控制器中的
Session
属性直接访问
Session

例如,在控制器中,您可以执行以下操作:

Session.Clear()

Singletone在这里不起作用,因为每当发出新请求时,都会重新生成控制器(以及控制器生成的对象)。记住,HTTP不保持状态

要持久化,可以将对象存储在会话中

登录时,请执行以下操作:

HttpContext.Current.Session["the-session-key"] = YourObject
需要访问对象时,请执行以下操作:

YourObjectType yourObject = (YourObjectType)HttpContext.Current.Session["the-session-key"]
要清除会话,请执行以下操作:

HttpContext.Current.Session.Clear();
如果您是在控制器内执行此操作,则可以使用控制器中的
Session
属性直接访问
Session

例如,在控制器中,您可以执行以下操作:

Session.Clear()