gpt4 book ai didi

c# - 将我的 DataContext 存储在 session 内存中是个好主意吗?

转载 作者:行者123 更新时间:2023-11-30 14:13:54 24 4
gpt4 key购买 nike

我正在编写一个非常简单的 ASP.net 项目。它使用 Linq2Sql DataContext 来访问存储过程。有一个 IDisposable 类在它的构造函数中创建一个新的 DataContext 并在它的 dispose 中处理它。

只要有可能,我就会将请求组合在一起:

    using(var dc = new MyDataAccessClass())
{
//All the data requests in here
}

// Do stuff with the data here

所以在整个代码中有很多这样的代码,主要是在 UserControls 中,我只是在想在起始页(或母版页)的 PageLoad 中创建单个 DataAccess 类是否有意义,存储它在 session 内存中,并在所有 UserControls 和诸如此类的东西中引用,然后在 PreRender 阶段处理它。

所以这是我的问题,这是个坏主意吗?我想这会涉及到一些与数据库的悬空连接,因为异常或调试会停止 PreRender 运行。也许检查 MasterPage 的加载以查看该 session 变量中是否有任何内容,如果是,则将其处理掉,将对其进行排序。

或者是否有更智能的方式在整个页面生命周期中共享 DataContext 而您的 DBA 不想用键盘敲打您?

最佳答案

Session 很可能不是一个好主意——您必须担心并发性、恢复断开的连接等。此外,在 PreRender 中处理上下文的方法也不是最好的方法,因为如果出现异常,PreRender 处理程序将永远不会执行。

System.Web.HttpContext.Current.Items 是 ASP.NET 中唯一仅在单个请求期间有效且在 ASP.NET请求在执行中间在不同线程之间传递。

您可以在 global.asax 中使用 Application_EndRequest 事件来始终正确地处理您的连接(EndRequest 也会在错误后调用)。

关于c# - 将我的 DataContext 存储在 session 内存中是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13231043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com