2017-12-18 2 views
0

ich EF6 verwende und ich versuche, eine Entität wie diese zu löschen:kann nicht dbSet mit löschen - Entity Framework

public virtual void Delete(TEntity entity) 
    { 

     DbContext.Configuration.ValidateOnSaveEnabled = false; 
     DbContext.ChangeTracker.DetectChanges(); 

     _dbSet.Remove(entity); 
    } 

Aber es gibt mir Fehler wie folgt aus:

enter image description here

Dann habe ich eine andere Methode wie folgt verwendet:

DbContext.ChangeTracker.DetectChanges(); 
     DbContext.Entry(entity).State = EntityState.Deleted; 

und jetzt ist der Fehler s etwas wie: enter image description here

Vielen Dank im Voraus.

Antwort

2

Sie können nicht an das Unternehmen entfernen, die in ObjectStateManager existiert nicht. Versuchen Sie, es anzuhängen, bevor Sie versuchen, es zu entfernen.

public virtual void Delete(TEntity entity) 
    { 
     DbContext.Configuration.ValidateOnSaveEnabled = false; 
     DbContext.ChangeTracker.DetectChanges(); 
     var entry = DbContext.Entry(entity); 
     if (entry.State == EntityState.Detached) 
      _dbSet.Attach(entity); 
     _dbSet.Remove(entity); 
    } 

Auch ich weiß nicht, wie Sie sich den Entitätsinstanz holen, aber nicht .AsNoTracking() verwenden, wenn Sie sie ändern oder entfernen.

+0

Ein Entitätsobjekt kann nicht von mehreren Instanzen von IEntityChangeTracker –

+0

referenziert werden, ich habe meinen Fehler gefunden. Ich übergab das Element, das aus Datagrid ausgewählt wurde, direkt an die Methode delete. Jetzt, nachdem ich das ausgewählte Objekt zuerst geholt und dann an die Methode übergeben habe, löste sich mein Problem. –

1

Versuchen Sie dies.

DbContext.Entry(entity).State = EntityState.Deleted; 
DbContext.SaveChanges(); 
+0

Ich habe versucht, aber es ist das gleiche –

+0

müssen Sie Ihre DbContext Initiation überprüfen, wo Delete-Methode vorhanden sind. – sebu

Verwandte Themen