Помогите улучшить UnitOfWork-Interface - PullRequest
0 голосов
/ 16 марта 2011

Я стараюсь изо всех сил достичь своего рода UnitOfWork против сохранения данных в текстовом формате. Без лишних объяснений я хотел бы сделать возможным выполнение двух запросов в одном и том же порядке.

Возьми это,

using (IDataUnitOfWork uow = new Data.SomeContext.Core())
{
  CustomerRepo repo = new CustomerRepo(uow);
  Data.Entities.Customer c = repo.GetCustomerById(191);
  ...
  c.name = c.name.Replace("_", "");
  //c.name = c.name + "_";
  //uow.Save();
}

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

using (IDataUnitOfWork uow = new Provider.TheProviderContext())
{
  CustomerRepo repo = new CustomerRepo(uow);
  Data.Entities.Customer c = repo.GetCustomerById(191);
  ...
  c.name = c.name.Replace("_", "");
  //c.name = c.name + "_";
  //uow.Save();
}

Этот контекст не основан на том же методе, но я думаю, что приведенный выше пример будет отражать то, что я пытаюсь сделать (и должен). На данный момент я могу видеть только этот способ решить ,,

using (IDataUnitOfWork uow = new Data.SomeContext.Core())
{
  ...
  if (anything == true) 
    using (IDataUnitOfWork uow = new Provider.TheProviderContext())
    {
      ...
    }
}

Это выглядит как хороший и понятный способ работы (bcz вся информация уже известна второму «использованию». Поправьте меня, если я совершенно не прав здесь , потому что у меня есть только это при планировании пока. Но было бы ДАЖЕ ЛУЧШЕ, если бы я мог позвонить

using (IDataUnitOfWork uow = new BothProviders())

.. который в свою очередь вызывает обоих провайдеров и запускает задачи одновременно для каждого из них. Я читал о фабриках, но это немного сбивает с толку (пока). Мои навыки окончательно заканчиваются здесь сегодня, к сожалению, чтобы сказать ..

1 Ответ

1 голос
/ 16 марта 2011

зависит от того, чего вы хотите достичь. Имейте в виду, что единица работы делает всю операцию атомарной. Если вы хотите объединить провайдеров, рассмотрите шаблон адаптера

шаблон адаптера подходит, когда вы хотите поддерживать (объединять) несколько разных интерфейсов на одном уровне абстракции, так как в вашем случае два UnitOfWork, которые, как я полагаю, будут делать разные вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...