Ответ заключается в двух упомянутых вами шаблонах проектирования.
Репозиторий - это шаблон проектирования, который помогает вам создать единую точку доступа к вашим данным.Например, CustomerRepository, который имеет такие функции, как GetById(int customerId)
, Update(Customer customer)
, Delete(Customer customer)
и Add(Customer customer)
и, в зависимости от вашего особого подхода к реализации шаблона, другие более специфические функции для обработки данных, в которых участвует клиент.
В обычном приложении у вас будет пара репозиториев, которые предоставят вам доступ к различным типам данных.В бизнес-функции вы затем использовали бы некоторые из этих репозиториев для создания функциональности.
Затем возникает шаблон UnitOfWork, поскольку это помогает вам сгруппировать набор связанных операций.Единица работы отслеживает изменения, пока вы не сохраните их в базе данных в целом.(ObjectContext в EF является реализацией шаблона UoW)
В вашем примере, показывающем основную форму с последующей загрузкой и обновлением сведений об одном из этих элементов, это группа связанных операций, которые вы хотите обновитьвсе вместе.
Это означает, что вы должны использовать одно UoW для основного и подробного представления.
Эта хорошая статья, которая показывает основы того, как реализация репозитория иШаблоны UoW могут выглядеть так, как при использовании EF.
Здесь вы можете найти объяснение шаблона репозитория и здесь Единицы работы (эти ссылки оба изШаблоны корпоративных приложений, действительно хорошая книга, если вы хотите узнать больше)