我一直在使用实体框架和ASP MVC。我已将实体对象存储在HttpContext.Current.Session中,以便始终使用相同的会话。现在我遇到了一些问题,我想知道这是不是一个坏主意,如果是这样,我该怎么办呢。
我现在遇到的问题是实体对象缓存数据,而一个用户看不到其他用户所做的更改。
答案 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)
通过本书,您希望您的对象上下文尽可能短。
所以你创建一个上下文,获取一些数据,将你的视图返回给客户。
并处理所有事情。
当您的数据库无法处理负载时开始缓存。