0

Эй, ребята, я работаю в MVC2 проекта, с EF4 и я имею следующее исключение:Объект объект не может ссылаться несколько экземпляров IEntityChangeTracker

Объект объект не может ссылаться несколькими экземплярами 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, чтобы использовать t он же ObjectContext, что является лучшим решением, но теперь я могу себе это позволить, любое предложение без UnityOfWork

+0

"Что-то вроде"? Есть ли еще этот код? Какая строка показывает ошибку? – jfar

ответ

0

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

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