gpt4 book ai didi

asp.net - 连接管理 ASP.net

转载 作者:行者123 更新时间:2023-12-02 10:10:47 26 4
gpt4 key购买 nike

如何管理 ASP.Net 应用程序中的数据库连接?

我的理解告诉我“最好”的方法是打开连接、进行查询、关闭连接 - 并多次执行此操作,因为连接池使成本可以忽略不计。

当我有一个 DAL 时,问题就出现了,其中每个方法都管理自己的连接。例如

User x = DAL.GetUserDetails();Customer y = DAL.GetCustomer();

在我们开始讨论 TransactionScope 之前这很好

using (TransactionScope t....{DAL.UpdateCustomer(y);DAL.UpdateUser(x);t.Complete();}

ASP.Net 现在想要使用 DTC,因为(我猜测)涉及多个连接。

有人会说“将连接缓存在某处”,但由于我管理安全性的方式(执行为/恢复),我需要显式地销毁连接,并且我不想在每个页面来执行此操作,因为有人会忘记调用电话。我还可以将连接传递到每个方法中,但这并不理想,因为页面必须管理连接。

我说得有道理吗?还是我错过了一些基本的东西?

最佳答案

我在某处读到,我不记得 Microsoft 将在哪里解决这个问题:当您有两个连接到同一个数据库时,它们不会升级到 DTC,这将使这个问题消失。

在那之前,我们所做的是开发 TransactionScope,然后我们的 DAL 会向 TS 请求新连接,当我们处理 TS 时,它会关闭连接。

连接存储在 LogicalCallContext 中,尽管我会考虑使用 HTTP Context。我在应用程序上线之前离开了公司,但据我所知,他们没有遇到任何问题。

所以你会有

using (CustomTS.New())
{
CustomerDal.Update()
userDal.Update()
}

CustomTS 有一个静态方法,可以获取当前事务和连接。

关于asp.net - 连接管理 ASP.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/342613/

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