c# - 保持单个连接还是仅在需要更改某些内容时才打开?

标签 c# .net wpf connection sql-server-express

我家里的服务器上有一个 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/

相关文章:

c# - 陌生声明

C# 与装饰成员一起工作

wpf - 每次打开 ContextMenu 时如何强制绑定(bind)评估?

c# - 在循环中使用 NEW 时,将项目添加到对象的 LIST<> 会导致重复的对象

c# - 在 C# Windows 应用程序中增加 Crystal Reports 的宽度

c# - FindLast 在 IEnumerable 上

c# - 编译时多态/重载

.net - 查找给定程序集中不需要的类

wpf - 防止 TreeView 中的自动水平滚动

c# - 如何创建 'Private' ResourceDictionary?