如果我有 SQL Server 支持的会话并运行类似的命令序列
HttpContext.Current.Session['user']
HttpContext.Current.Session['user']
这会向会话 DB 表发出 2 个请求以获取值,还是 asp.net 对 Session 对象做任何特殊处理以防止多次 DB 命中?
如果我有 SQL Server 支持的会话并运行类似的命令序列
HttpContext.Current.Session['user']
HttpContext.Current.Session['user']
这会向会话 DB 表发出 2 个请求以获取值,还是 asp.net 对 Session 对象做任何特殊处理以防止多次 DB 命中?
绝对是的。
我有 SQL 服务器会话状态设置,并在其上运行 Profiler。并且可以清楚地看到优化的数据库调用。如果事实上有一次获得多个会话项目的优化。
像下面的代码也将导致 SINGLE 优化的调用集(注意:它不是一个普通的单个 DB 调用来获取会话项)
HttpContext.Current.Session['user']
HttpContext.Current.Session['userTwo']
注意:在 .NET 4 中测试
如果需要,您可以实现自己的会话状态提供程序。 http://msdn.microsoft.com/en-us/library/ms178587.aspx