Я использую LINQ to SQL в библиотеке объектов доступа к данным. Библиотека используется как в веб-контексте (веб-приложение / веб-служба), так и в не-сети (служба Windows). Первоначально я сохранил DataContext
на текущем HttpContext
, поскольку он позволял мне управлять довольно маленькой единицей работы (один веб-запрос) и избегал глобальных объектов в веб-приложении. Очевидно, это не работает в службе Windows.
У Рика Страля есть хорошая статья по управлению временем жизни DataContext
: http://www.west -wind.com / weblog / posts / 246222.aspx . К сожалению, я не могу определиться с лучшим подходом. Глобальный DataContext
не работает по причинам, о которых он упоминает, отдельный поток DataContext
кажется сложным и потенциально более сложным, чем он стоит, а экземпляр для каждого объекта кажется суетливым - вы теряете некоторую элегантность, когда присоединяете DataContext
используется для создания DAO
для этого DAO
, чтобы он мог update
или delete
позже - не говоря уже о том, что в отношениях есть что-то неприятное, смешное.
Есть ли у кого-нибудь личный опыт, позволяющий предположить, что один подход лучше другого? Или еще лучше, у кого-нибудь есть четвертый или пятый подход, которого я не вижу? Где лучше всего хранить и управлять своим DataContext
?