Мне обычно нравится создавать соединение с базой данных самостоятельно и вручную контролировать ее время жизни с помощью `using {} '. Например:Чтобы инкапсулировать подключение к базе данных в бизнес-объектах или нет?
SqlConnection sqlConnection = new SqlConnection(connectionString);
using(sqlConnection) {
BusinessObject myBusinessObject = new BusinessObject(sqlConnection);
// do stuff with the business object
...
}
Таким образом, очевидно, что я использую ресурс, который необходимо очистить соответствующим образом. Однако это приводит к множеству повторяющихся усилий. Я соблазн создать соединение Sql внутри бизнес-объекта и реализовать IDisposable на нем. Я бы закрыл соединение в методе Dispose().
using(BusinessObject myBusinessObject = new BusinessObject()) {
// do stuff with myBusinessObject
...
}
Проблема у меня в том, что это может быть не так очевидно, что бизнес-объект должен быть расположен, если вы не видите его в использовании.
Как вы, ребята, это сделаете?
Спасибо за ответ. Код, о котором я сейчас думаю, довольно прост. Я использовал NHibernate в прошлом, не уверен, что хочу пойти туда для этого проекта. Но, как вы сказали, может быть, прокрутка источника будет хорошим упражнением. – dnewcome
Если nHibernate кажется слишком большим, то рассмотрим LINQtoSQL. По моему опыту это очень легкий вес.Вы можете либо рассматривать объекты L2S как DTO, либо расширять их с помощью частичных классов/методов в полноценные бизнес-объекты. – tvanfosson