Unity PerThreadLifetimeManager
От: SHEMA  
Дата: 06.02.11 21:46
Оценка:
Интересно, а никому не приходило в голову использовать PerThreadLifetimeManager менеджер жизненного цикла объектов в Unity для создания / управления соединениями с базой данных?

Ну типичный код приложения работающего с базой примерно такой:

using (var cn = new SqlConnection(connectionString))
{
    cn.Open();
    var cm = new SqlCommand(commandString, cn);
    cm.ExecuteNonQuery();
}


В общем случае не важно, это ADO.NET или BLTookit, факт в том что соединение нужно освобождать и постоянно помнить об этом и писать using {}. C PerThreadLifetimeManager можно сэкономить на этой писанине. Хочется посоветоваться со знатоками Unity, и как Вы оцениваете етот подход в целом.

Спасибо
Re: Unity PerThreadLifetimeManager
От: Аноним  
Дата: 07.02.11 04:26
Оценка:
Здравствуйте, SHEMA, Вы писали:

SHE>Интересно, а никому не приходило в голову использовать PerThreadLifetimeManager менеджер жизненного цикла объектов в Unity для создания / управления соединениями с базой данных?


Я большей частью пишу логику доступную через WCF сервисы и у себя использую самописный PerRequest менеджер. Соединения всё равно берутся из пула, но я гарантированно закрываю соединение, когда заканчивается запрос.
Re[2]: Unity PerThreadLifetimeManager
От: SHEMA  
Дата: 07.02.11 08:11
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Я большей частью пишу логику доступную через WCF сервисы и у себя использую самописный PerRequest менеджер.

А>Соединения всё равно берутся из пула, но я гарантированно закрываю соединение, когда заканчивается запрос.

В большинстве сценариев бизнес приложений PerRequest = PerThread.
Если Вы не используете using {} и не пихаете в каждый метод DbConnection параметром, можно в двух словах принцип работы вашего менеджера и особенно как работает 'гарантированное закрытие' соединения?
А разве в Unity, если класс реализует IDisposable, он не гарантированно диспоузится по окончании времени жизни?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.