Здравствуйте, kuj, Вы писали:
MC>>>В .NET ресурсы, для которых важна детерминированность времени освобождения (файлы, соединения) оборачиваются в объекты, реализующие интерфейс IDisposable (это даже можно считать паттерном). По команде Dispose() объект сразу освобождает ресурс, после чего переходит в состояние Disposed ("я ресурсом уже не владею") и спокойно себе дожидается, пока его соберет GC и освободит все оставшиеся ресурсы (память, в частности).
I>>O! Коннекцией я уже не владею, но на сервере она висит и дожидается когда ее GC грохнет. Кузяво это. Или я неправ?
kuj>Стандартная практика использования IDbConnection в .NET — in-place. То есть по принципу открываем, выполнеяем CRUD операцию(и), закрываем (возвращаем в пул подключений). Даже если забыть закрыть, объект подключения почти тут же станет кандидатом на сборку, так как выйдет за scope. Аналогично с файлами.
kuj>При чем в отличии от Delphi все проще и читабельней благодаря оператору using — отпадает необходимость явно делать try finally.
Забыл упомянуть, что для доступа к БД фактически повсеместно используются O/RM, которые сами заботятся о подключениях. Единственное, где надо помнить о using — для TransactionScope`ов.