ObjectContext внутри другого ObjectContext

Я работаю над системой фабрики компонентов, где ObjectContexts создаются автоматически в зависимости от некоторых правил конфигурации. Каждый раз, когда вызывается метод, фабрика компонентов решает, где создать область ObjectContext/Transaction и т. д.

В большинстве случаев мне удавалось справляться с созданием и удалением ObjectContext. Но когда метод рекурсивно вызывает сам себя, я создаю ObjectContext при каждом вызове метода. Это будет что-то вроде этого:

using (MyEntities entitityContext = new MyEntities())
{
    // do some code here
    entitityContext.SaveChanges();

    using (MyEntities anotherEntitityContext = new MyEntities())
    {
        // do some other code here
        anotherEntitityContext.SaveChanges();
    }
}

Как EntityFramework справляется с этим? Является ли второй ObjectContext таким же, как первый? Если нет, то как мне сделать так, чтобы второй ObjectContext был «той же» ссылкой на первый с той же конструкцией «new ObjectContext()»?

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


person rodrigogq    schedule 10.05.2013    source источник
comment
Похоже, вы заново изобретаете контейнеры IoC. Большинство контейнеров IoC позволяют настраивать управление жизненным циклом.   -  person Gert Arnold    schedule 10.05.2013
comment
Я бы добавил, что это нормально, но у ошибок может быть несколько открытых контекстов. Я знаю, что сделал ошибку ... в любом случае, если IoC слишком много для вашего решения, по крайней мере, рассмотрите синглтон с коротким жизненным циклом.   -  person phil soady    schedule 10.05.2013


Ответы (1)


Я узнал, что Фил Соди прав. Я нашел другой способ использования ObjectContexts без необходимости создавать несколько объектов. Спасибо за ваши комментарии.

person rodrigogq    schedule 26.11.2013