sto ottenendo l'erroreEntity Framework "Un oggetto entità non può fare riferimento più istanze di IEntityChangeTracker"
Un oggetto entità non può fare riferimento più istanze di IEntityChangeTracker
quando si cerca di crea una nuova entità e salvala nel DB.
Capisco l'errore e come si verifica normalmente, ma in questo caso tutto ciò che sto facendo è creare una nuova entità e aggiungerne alcuni int
s prima di salvare, non aggiungere altre entità da altri contesti.
Ho incluso la funzione che causa l'errore. Come puoi vedere, viene passato un EndProduct
che è un'entità che viene tracciata da un contesto diverso da quello nello _billableRepository
, ma poiché non sto provando ad assegnare comunque quell'entità al conto appena creato, non lo faccio guarda come può essere un problema.
L'unico modo che posso vedere l'errore accade è perché un paio di int
valori che vengono assegnati alla nuova Billable
sono presi da quello esistente EndProduct
che viene monitorata da un contesto diverso, ma sicuramente la IEntityChangeTracker
doesn' t tracciare i singoli primitivi di un'entità?
public void AddBillable(EndProduct endProduct, int? purchaseId, string centreCode, int userId)
{
if (endProduct.Product != null)
{
var existingBillableForUserForProductId = _billableRepository.GetQuery(b => b.UserId == userId && b.ProductId == endProduct.ProductId);
if (endProduct.BillablePartId != null && !existingBillableForUserForProductId.Any())
{
var billable = new Billable {
ProductId = endProduct.ProductId.Value, //int
UserId = userId, //int
PartId = endProduct.BillablePartId.Value, //int
DateAdded = DateTime.UtcNow, //datetime
PurchaseId = purchaseId, //int
CentreCode = centreCode //string
};
_billableRepository.Add(billable); //error here
_billableRepository.UnitOfWork.SaveChanges();
}
}
}
Prova questo. _billableRepository.Billable.Add (fatturabile); _billableRepository.SaveChanges(); – NEER
Stai smaltendo il tuo contesto correttamente ogni volta? Dovresti inizializzarlo appena prima di averne bisogno e smaltirlo il prima possibile. –