Я изо всех сил стараюсь добиться своего рода UnitOfWork против сохранения данных в datacontext. Без лишних объяснений я хотел бы сделать возможным выполнение двух запросов в одном и том же использовании.
Возьми это,
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())
{
...
}
}
Это выглядит как хороший и понятный способ работы (потому что вся информация уже известна второму «использующему». Поправьте меня, если я здесь полностью ошибаюсь, потому что у меня пока только это на планировании. Но было бы ЕЩЕ ЛУЧШЕ, если бы я мог позвонить
using (IDataUnitOfWork uow = new BothProviders())
.. который, в свою очередь, вызывает обоих поставщиков и выполняет задачи одновременно для каждого из них. Я читал о фабриках, но это немного сбивает с толку (пока). Мои навыки окончательно заканчиваются сегодня, к сожалению..