Закрытие соединения Sql в ASP.NET и проблемы с памятью ⇐ C#
-
Гость
Закрытие соединения Sql в ASP.NET и проблемы с памятью
В приложении ASP.NET я работаю с уровнем данных, который имеет такие функции, как:
public DataSet GetFacilitiesInfo (строка userName = null) { DataSet Ds = новый DataSet(); строка сохраненногоProcName = «FacilitySelect»; SqlConnection sqlConn = новый SqlConnection(); SQLCommand sqlCommand; пытаться { DBConnection cn = новый DBConnection(); sqlConn = cn.DBConnTIP(_connectionString); sqlCommand = новый SqlCommand (storedProcName, sqlConn); sqlCommand.ТипКоманды = ТипКоманды.СохраненнаяПроцедура; SqlDataAdapter sqlDA = новый SqlDataAdapter(sqlCommand); sqlDA.Fill(Ds); вернуть Ds; } поймать (Исключение e) { бросить е; } окончательно { sqlConn.Закрыть(); sqlConn.Dispose(); } } По версии Microsoft: «Метод Dispose в первую очередь применяется для освобождения неуправляемых ресурсов».
Я знаю, что в приведенном выше коде мы можем использовать using { ... , но за кулисами CIL преобразует его в точно такие же вызовы функций.
Насколько я понимаю, SqlConnection (ADO.NET) — это управляемый объект, так почему же мы его удаляем?
Кажется, я что-то упускаю.
В приложении ASP.NET я работаю с уровнем данных, который имеет такие функции, как:
public DataSet GetFacilitiesInfo (строка userName = null) { DataSet Ds = новый DataSet(); строка сохраненногоProcName = «FacilitySelect»; SqlConnection sqlConn = новый SqlConnection(); SQLCommand sqlCommand; пытаться { DBConnection cn = новый DBConnection(); sqlConn = cn.DBConnTIP(_connectionString); sqlCommand = новый SqlCommand (storedProcName, sqlConn); sqlCommand.ТипКоманды = ТипКоманды.СохраненнаяПроцедура; SqlDataAdapter sqlDA = новый SqlDataAdapter(sqlCommand); sqlDA.Fill(Ds); вернуть Ds; } поймать (Исключение e) { бросить е; } окончательно { sqlConn.Закрыть(); sqlConn.Dispose(); } } По версии Microsoft: «Метод Dispose в первую очередь применяется для освобождения неуправляемых ресурсов».
Я знаю, что в приведенном выше коде мы можем использовать using { ... , но за кулисами CIL преобразует его в точно такие же вызовы функций.
Насколько я понимаю, SqlConnection (ADO.NET) — это управляемый объект, так почему же мы его удаляем?
Кажется, я что-то упускаю.
Мобильная версия