Repository
не должен открывать контекст данных, ему необходимо передать DataContext
- так как он не должен владеть им. Допустим, у вас есть операция, которая должна быть в транзакции и включает несколько репозиториев, что бы вы сделали?
Вам необходимо использовать UnitOfWork
шаблон .
В этом шаблоне UoW
(который включает DataContext
) передается в хранилище.
Практически , ProductManager
на бизнес-уровне создаетUnit Of Work
.