0

Could I store a SqlConnection in the HttpContext? I mean, how can I share a single SqlConnection across multiple classes?

In my project every class inherits a base abstract class that open and close connection. This class recognizes if a SqlConnection was opened by another class in that case uses it.

I can store this connection in another way that isn't HttpContext? There is another method to do this, exp. pass the connection between layers?

THX

4

2 回答 2

0

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

在例如 ADO.NET 的情况下,您有连接池。这意味着即使您在连接上调用 close ,它也没有关闭,它会返回给pooler。这是一种跟踪连接并通过管理它们来最大化效率的机制。如果你调用 Open 来获得一个新的连接,那么在后台你可能会得到一个几分钟前使用过的现有连接,它仍然被 pooler 保持打开并返回以供重用。

所以,如果动力是效率,那么这不是你应该遵循的路径。它已经在较低的级别上得到处理。请参阅http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx

于 2013-08-06T09:43:28.043 回答
0

我想知道为什么需要存储单个 SqlConnection。它闻起来不太好。

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

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

于 2013-08-06T09:39:35.513 回答