У нас есть служебный класс SQL, который берет имя хранимой процедуры и ее входные параметры и возвращает результаты в виде данных. Причиной этого является то, что нам не нужно беспокоиться о том, чтобы забыть закрыть соединения и иметь утечки соединения. Кроме того, чтобы мы могли сократить код, не создавая пересоздания адаптеров данных и считывателей данных в наших слоях доступа к данным.
Проблема, с которой я столкнулся, заключается в том, что мы заполняем таблицу данных, чтобы мы могли циклически проходить через нее для создания наших объектов, поэтому мы в основном используем ее как хранилище данных. Я читал о классах, которые возвращают datareader или dataadapter. Но проблема в том, что либо клиент должен открывать и закрывать соединения, либо вы должны закрывать соединение в методе Finalize. Похоже, вы не хотите, чтобы сборщик мусора отвечал за закрытие соединений с базой данных.
Подводя итог, мы хотим иметь класс, чтобы мы могли сократить код, не создавая носителей данных для каждого запроса и чтобы мы могли обеспечить закрытие соединений с базой данных.
Как лучше всего справиться с этим?
ОБНОВЛЕНИЕ: Все еще думаю об этом, но до сих пор кажется, что лучше всего по-прежнему возвращать хранилище данных, использовать CommandBehavior.CloseConnection, а затем доверять тому, кто когда-либо использует класс для вызова dr.Close ()