ASP.NET MVC保存实体会话

时间:2009-12-21 15:49:33

标签: asp.net-mvc entity-framework

我一直在使用实体框架和ASP MVC。我已将实体对象存储在HttpContext.Current.Session中,以便始终使用相同的会话。现在我遇到了一些问题,我想知道这是不是一个坏主意,如果是这样,我该怎么办呢。

我现在遇到的问题是实体对象缓存数据,而一个用户看不到其他用户所做的更改。

3 个答案:

答案 0 :(得分:3)

会话基本上是一个特定于用户的类似哈希表的结构。如果要存储系统所有用户都可以看到的数据,您可能希望使用应用程序范围或缓存。

MS的这篇文章介绍了状态管理的不同选项,包括会话和应用程序:

http://msdn.microsoft.com/en-us/library/75x4ha6s.aspx

缓存略有不同,因为它允许您执行设置过期等操作。如果您不需要这种功能,我建议您坚持使用应用程序状态。有关MS缓存的文章:

http://msdn.microsoft.com/en-us/library/6hbbsfk6(VS.71).aspx

答案 1 :(得分:2)

将请求/会话之间的实体存储在内存中的问题或者无论如何,如果每个请求/会话都有一个新的ObjectContext,则必须非常小心,因为并且实体一次只能附加到一个ObjectContext ,并且很容易忘记分离(在同一会话中的请求之间)或正确共享对象(在不同会话中的并发请求之间)。

查看此Tip以获取有关如何在请求/用户/会话等之间缓存数据的线索。

希望这有帮助

亚历

答案 2 :(得分:1)

通过本书,您希望您的对象上下文尽可能短。

所以你创建一个上下文,获取一些数据,将你的视图返回给客户。

并处理所有事情。

当您的数据库无法处理负载时开始缓存。