EF4 - Извлечение идентичности в транзакции и последующее выполнение SaveChanges () Отделить или несколько контекстов? - PullRequest
0 голосов
/ 26 октября 2011

(Примечание: я вижу это , но это не совсем то, что я хочу сделать.)

У меня есть требование, где мне нужно сделать следующее:

  1. Создание новой Foo сущности
  2. После создания сущности Foo создайте новую сущность FooAudit и используйте новое значение идентификатора из новой сущности Fooв текстовом описании.FooAudit не имеет отношения к Foo, поэтому личность должна быть извлечена вручную из создания Foo.
  3. Выполните эти действия в транзакции "все или ничего", сохраняя EntityState Foo запись (Added), если я не фиксирую транзакцию.

Использую ли я другой контекст, подобный так?

using (var fooContext = GetContext())
{

    fooContext.Foos.AddObject(new Foo());

    using (var transaction = new TransactionScope())
    {

        // Save Foo, while maintaining the Changed EntityState until AcceptAllChanges
        fooContext.SaveChanges(SaveOptions.DetectChangesBeforeSave);

        using (var auditContext = GetContext())
        {
            // Save FooAudit, maintaining the Changed EntityState until AcceptAllChanges
            auditContext.FooAudits.AddObject(new FooAudit());
            auditContext.SaveChanges(SaveOptions.DetectChangesBeforeSave);
            transaction.Complete();
            fooContext.AcceptAllChanges();
            auditContext.AcceptAllChanges();
        }
    }
}

Или есть лучший способ?

1 Ответ

0 голосов
/ 03 ноября 2011

Я решил это, используя другой контекст, как показано на рисунке.

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