C# SqlConnection和HttpContext

C# SqlConnection和HttpContext,c#,architecture,httpcontext,sqlconnection,C#,Architecture,Httpcontext,Sqlconnection,我可以将SqlConnection存储在HttpContext中吗? 我的意思是,如何跨多个类共享单个SqlConnection 在我的项目中,每个类都继承一个打开和关闭连接的基本抽象类。 此类识别另一个类是否打开了SqlConnection,在这种情况下使用它 我可以用另一种方式存储此连接,而不是HttpContext? 还有另一种方法可以做到这一点,例如,传递层之间的连接 THX我想知道为什么需要存储单个SqlConnection。味道不好闻 如果您确实需要跨多个类共享一个SqlConnec

我可以将
SqlConnection
存储在
HttpContext
中吗? 我的意思是,如何跨多个类共享单个
SqlConnection

在我的项目中,每个类都继承一个打开和关闭连接的基本抽象类。 此类识别另一个类是否打开了
SqlConnection
,在这种情况下使用它

我可以用另一种方式存储此连接,而不是
HttpContext
? 还有另一种方法可以做到这一点,例如,传递层之间的连接


THX

我想知道为什么需要存储单个SqlConnection。味道不好闻

如果您确实需要跨多个类共享一个SqlConnection,那么依赖注入可能是一个更好的选择。让连接工厂实例化一个连接对象,并根据需要传递它


否则,让DBMS担心控制您的连接资源。每次需要时创建、打开和关闭一个连接。

您走错了路。除非您需要共享Lasse V.Karlsen在其评论中提到的事务上下文,否则您不应该遵循这种想法。如果您担心性能,而这正是您希望保持一个连接打开并共享的原因,那么它也是错误的

例如,在ADO.NET的情况下,您有连接池。这意味着,即使在连接未关闭时调用close,它也会返回到池处理程序。这是一种跟踪连接并通过管理它们来最大化效率的机制。如果您呼叫Open以获得新连接,那么在引擎盖下,您可能会获得一个在几分钟前使用过的现有连接,该连接仍由pooler保持打开,并返回以供重用

因此,如果动力是效率,那么它就不是你应该遵循的道路。它已经在较低的层次上得到了处理。请参阅。

为什么要这样做?您是否共享事务上下文?为什么你不能在需要的时候简单地打开和关闭连接,而不是共享它呢?你可能可以,但是真的:你为什么想要呢?将
SqlConenction
存储到
HttpContext
中有什么好处??我认为您应该始终只在需要时打开
SqlConnection
——使用
使用(SqlConnection conn=newsqlconnection(..){…}
方法。我没有很好地解释。我确切地知道应用程序池是如何工作的。问题不是这个。我想在演出中使用一个连接。如果我保持连接处于打开状态,则细化持续时间比另一种情况(使用来自每个类的连接)短。好的,存储连接不是很好。您的解决方案是在类之间传递连接对象,对吗?