Winforms + EF + DI

zz
Дата: 19.05.2014 09:27:59
Здрасьте.

Имеем задачу: создать проект на WinForms, задействуя моднейшие технологии и паттерны MVP, EF, DI.

Бодро рисуем слои: View => Presenter => Logic => Repository => EF => Db

Прикручиваем DI контейнер, разруливаем зависимости, добираемся до ObjectContext, и задаем себе животрепещущий вопрос: а какой у него должен быть lifetime?

С вебом все просто: в начале запроса создали, в конце запроса грохнули, в Ninject на этот случай даже есть .InRequestScope.

А вот с WinForms непонятно. Microsoft рекомендует "one context per form". Это что же это получается. В нижних слоях, при попытке получения DbContext, надо каким-то образом понять, из какой формы пришел запрос на контекст, и в зависимости от этого вернуть соотв. контекст. Как-то это невесело весьма.

Посему: поделить пожалуйста best practics. Интересует именно связка WinForms + EF + DI, кто как решает.

Или не париться вообще, создать один контекст на аппликуху? Чем это чревато?
netivan
Дата: 19.05.2014 10:59:41
zz,

вот имхо dbcontext дожлен быть в рамках unit of work. Для многопоточной реализации - только так.