Единица рабочего вопроса - PullRequest
2 голосов
/ 26 января 2009

Как использовать шаблон единицы работы в следующем сценарии:

Я пишу приложение winforms. У меня есть один экран, где пользователь может редактировать один заказ. На этом экране пользователь может открыть другую форму, чтобы выбрать компанию доставки. Пользователь также может добавлять / редактировать существующие компании доставки в этой дочерней форме перед выполнением выбора.

Как я могу реализовать этот сценарий, используя шаблон единицы работы? В настоящее время у меня есть одна единица работы для экрана ввода заказа. Моей первой мыслью было включить дочернюю форму и в эту единицу работы. Проблема в том, что изменения в компании доставки должны быть сохранены, когда они находятся в дочерней форме. Но когда я сохраняю изменения в компаниях доставки, это также сохраняет изменения в заказе.

Должен ли я создать вторую единицу работы для любых изменений в компаниях доставки? В таком случае, как я могу сделать изменения в этой единице работы видимыми в первой единице работы?

Ответы [ 2 ]

1 голос
/ 26 января 2009

Из вашего описания это звучит так, как будто у вас действительно есть две единицы работы здесь. Первый - «Ввод заказа», а второй - «Редактировать компанию доставки». Каждая единица работы имеет определенный вид сеанса или транзакции. Чтобы связаться с дочерней формой и записью заказа, вам необходимо отсоединить объект компании от сеанса дочерней формы и повторно прикрепить его к родительскому элементу. Как в действительности это реализовать, зависит от используемого вами уровня доступа к данным, но простой способ - передать идентификатор компании.

0 голосов
/ 07 марта 2015

В настоящее время у меня есть одна единица работы для экрана ввода заказа. Проблема в том, что изменения в компании доставки должны быть сохранены, когда они находятся в дочерней форме.

Как я могу реализовать этот сценарий, используя шаблон единицы работы?

  1. OrderEditForm и DeliveryCompanyCollectionEditForm должны иметь один и тот же DeliveryCompanyRepository, который имеет ту же единицу работы.

  2. DeliveryCompanyRepository должен возвращать компании из базы данных + компании, которые были добавлены в единицу работы.

Таким образом, новый объект компании доставки должен быть доступен в OrderEditForm без постоянных изменений.

Должен ли я создать вторую единицу работы для любых изменений в компаниях доставки? В таком случае, как я могу сделать изменения в этой единице работы видимыми в первой единице работы?

Две или более параллельных единицы работы требуют особого внимания при синхронизации данных. Когда фиксируется одна единица работы, какой-то посредник обычно обновляет все остальные единицы работы, как уже указано в другом ответе.

...