2

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

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

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

    Announcements announcements = Storage.User.Announcements;
    var result = from m in announcements 
                 where m.DueDate== 'someting'

我有很多与用户相关的功能,并希望在不从数据库获取的情况下保留和查询记录

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

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

PL 建议任何模式或实践

4

1 回答 1

0

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

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

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

HttpContext.Current.Session["the-session-key"] = YourObject

当您需要访问对象时,请执行以下操作:

YourObjectType yourObject = (YourObjectType)HttpContext.Current.Session["the-session-key"]

要清除会话,请执行以下操作:

HttpContext.Current.Session.Clear();

如果您在控制器内部执行此操作,则可以直接访问控制器中的SessionwithSession属性。

例如,在 Controller 中,您可以执行以下操作:

Session.Clear()
于 2012-08-08T17:10:02.277 回答