Вопрос
Как я должен использовать шаблон единицы работы в следующем сценарии:
Я пишу приложение winforms.У меня есть один экран, где пользователь может редактировать один заказ.На этом экране пользователь может открыть другую форму, чтобы выбрать компанию доставки.Пользователь также может добавлять / редактировать существующие компании доставки в этой дочерней форме перед выполнением выбора.
Как я могу реализовать этот сценарий, используя шаблон единицы работы?В настоящее время у меня есть одна единица работы для экрана ввода заказа.Моей первой мыслью было включить дочернюю форму и в этот блок работы.Проблема в том, что изменения компании доставки должны сохраняться в дочерней форме .Но когда я сохраню изменения в компаниях-доставщиках, это также сохранит изменения в заказе.
Должен ли я создать вторую единицу работы для любых изменений в компаниях-поставщиках?В таком случае, как я могу сделать изменения в этой единице работы видимыми в первой единице работы?
Решение
Из вашего описания это звучит так, как будто у вас действительно есть две единицы работы здесь.Первый - "Ввод заказа", а второй - "Изменить компанию доставки".Каждая единица работы имеет какой-то базовый вид сеанса или транзакции.Чтобы перейти из дочерней формы к записи заказа, вам нужно будет отсоединить объект company от сеанса дочерней формы и повторно прикрепить его к родительской.Как на самом деле это реализовать, зависит от используемого вами уровня доступа к данным, но самый простой способ - передать идентификатор компании.
Другие советы
В настоящее время у меня есть одна единица работы для экрана ввода заказа.Проблема в том, что изменения компании доставки должны сохраняться в дочерней форме.
Как я могу реализовать этот сценарий, используя шаблон единицы работы?
OrderEditForm
иDeliveryCompanyCollectionEditForm
должны разделять одно и то жеDeliveryCompanyRepository
это одна и та же единица работы.DeliveryCompanyRepository
должны быть возвращены компании из базы данных + компании, которые были добавлены во время выполнения единицы работы.
Таким образом, новый объект компании доставки должен быть доступен в OrderEditForm
без постоянных изменений.
Должен ли я создать вторую единицу работы для любых изменений в компаниях-поставщиках?В таком случае, как я могу сделать изменения в этой единице работы видимыми в первой единице работы?
Два или более рабочих процесса, используемых параллельно, требуют особого внимания при синхронизации данных.Когда фиксируется одна единица работы, какой-нибудь посредник обычно обновляет все остальные единицы работы, как уже было указано в другом ответе.