我家里的服务器上有一个 SQL 服务器(这是一个带有 1GB RAM 的 Atom 处理器),我用它来存储我的一两个应用程序的数据。我想知道是否应该在程序启动时创建一个 DataContext 对象,然后在应用程序的整个生命周期中保留它,或者仅在必要时创建连接。如果应用程序突然死掉会发生什么?连接是否被清理?
最佳答案
除非您向 DataContext 对象传递一个已经打开的 SqlConnection,否则 DataContext 无论如何都会在数据库操作完成后自动关闭数据库连接。所以它不会保持连接打开。您可以通过查看 Reflector 中的 DataContext 类来看到这一点,或者您可以阅读 ASP.NET MVC Tip #34: Dispose of your DataContext(or Don't)博客文章。因此,即使您的 DataContext 对象继续存在,也不应该有任何打开的数据库连接。
如果您在 DataContext 外部处理数据库连接并保持其打开状态,那么您确实不应该这样做。一般来说,您应该在需要的时间和地点创建和使用资源,包括 DataContext 对象。没有必要在没有任何需求的情况下保持数据库连接打开,关闭它以便将其释放回池中以服务另一个数据库连接请求。正如我所说,如果您让 DataContext 处理数据库连接,则就数据库连接而言,您不需要执行任何特殊操作。
如果您的应用程序突然崩溃并终止,您应该没事,因为一切都会消失,包括打开的数据库连接和与您的应用程序域关联的底层连接池。
关于c# - 保持单个连接还是仅在需要更改某些内容时才打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1365148/