我们偶尔会遇到需要重启的SqlServer锁定,而我正在审查遗留代码以尝试隔离原因。
在每个c#ASP.Net页面中包含的库文件中,我发现:
sConString = ConfigurationSettings.AppSettings.Get("SQLConnString");
oCon = new SqlConnection(sConString);
如果页面进行数据库访问,则以
开头oCon.Open();
并以:
结束oCon.Close();
oCon.Dispose();
但有些页面没有进行数据库访问,因此没有调用Dispose();
。
我的问题是,创建SqlConnection
并不会导致Disposed()
导致开销?
感谢您的任何建议
答案 0 :(得分:0)
如果没有打开连接,则无需调用Dispose
,当您创建SQL连接实例时,它只是普通的受管资源,将由CLR自动处理。无论如何,在灵活性和可维护性方面关闭或处置任何SQL连接是一种好习惯。
答案 1 :(得分:0)
Dispose()与内存管理有关,而不是连接管理。我不认为这会解决你的问题。您可能希望确保在Try-Catch的finally块中关闭连接。这样,如果您的打开连接成功,连接将被关闭。