На объектный объект нельзя ссылаться несколькими экземплярами IEntityChangeTracker - PullRequest
0 голосов
/ 30 декабря 2010

Эй, ребята, я работаю в MVC2 проекте с EF4 , и у меня следующее исключение:

На объектный объект нельзя ссылаться несколькими экземплярами IEntityChangeTracker

Я пытаюсь сделать что-то вроде этого:

Transaction transaction = new Transaction();
transaction.Amount = response.Amount;
...
_transactionService.Add(transaction);
_transactionService.Save();

OrderPayment orderPayment = new OrderPayment();
orderPayment.AuthorizationTransaction = transaction;
...
_orderPaymentService.AddOrderPayment(orderPayment);
_orderPaymentService.Save();

у меня есть 3 слоя

  1. Уровень хранилища, где у меня есть вся логика EF4 и базовый CRUD для каждой сущности
  2. Сервисный уровень, который применяет всю мою бизнес-логику и использует репо, конечно, я не имею здесь никакой ссылки на objectcontext EF4
  3. И MVC в моем веб-слое

приведенный выше код принадлежит контроллеру веб-слоя, и мои репозитории:

OrderPaymentRepo

public void AddOrderPayment(OrderPayment orderPayment)
{
    _pharmacyDpnCtx.OrderPayments.AddObject(orderPayment);
}

public int Save()
{
    return _pharmacyDpnCtx.SaveChanges();
}

и TransactionRepo :

public void Add(Transaction transaction)
{
    _pharmacyDpnCtx.Transactions.AddObject(transaction);
}

public int Save()
{
    return _pharmacyDpnCtx.SaveChanges();
}

Я занимался исследованиями в Интернете, но многие решения имеют UnityOfWork для использования того же ObjectContext , это лучшее решение, но теперь я могу себе это позволить, любое предложение без UnityOfWork

1 Ответ

0 голосов
/ 27 июня 2011

Во-первых, взгляните на эту ссылку - 8 Entity Framework Gotchas , в 5-й и 6-й главах дано полное объяснение вашего вопроса.

Во-вторых, самое простое, что выможно использовать один и тот же объект «Контекст» в методе «Сохранить и добавить».

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