(Был комментарий) ...
Теория заключается в том, что вы не должны обращаться к базе данных из своей бизнес-логики - она должна быть в отдельном классе доступа к данным.(Например, в будущем вам нужно хранить их в автономном режиме в формате XML или использовать Oracle, а не SQL Server ... вы не хотите переписывать свою бизнес-логику!)
Ваши бизнес-объекты должныне имеют связи с базой данных, связанной с ними.Соединение должно быть открыто в некотором методе фабричного типа DAL, объект извлекается / строится, затем соединение закрывается и объект возвращается.
Сами бизнес-объекты должны содержать поля и методы бизнес-логики, которые могут вызывать обратный вызовк уровню доступа к данным, который должен создать новое соединение с базой данных для каждого метода DAL.
Ваши опасения по поводу неэффективности можно снять, используя пул соединений, что означает, что если вы открываете и закрываете соединение сотни разСкорее всего, они все будут использовать один и тот же.Но вы не должны держать связи с базой данных вообще, особенно в качестве членов класса.
Надеюсь, это поможет!