Закрытие SqlConnection в ASP.NET и проблема с памятью [дубликат] ⇐ C#
-
Anonymous
Закрытие SqlConnection в 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) — это управляемый объект, так почему же мы его удаляем?
Кажется, я что-то упускаю.