2017-12-18 8 views
0

私はEF6を使用していますが、私はこのようなエンティティを削除しようとしています:dbSetを使用して削除することができません - Entity Frameworkは

public virtual void Delete(TEntity entity) 
    { 

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

     _dbSet.Remove(entity); 
    } 

しかし、それは私にこのようなエラー与えている:

enter image description here

を次に、私はこのような別の方法を使用しました:

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

今、エラーはsです次のようになります。 enter image description here

ありがとうございます。

答えて

2

ObjectStateManagerに存在しないエンティティを削除することはできません。取り外しを試みる前に取り付けてください。

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); 
    } 

また、私はあなたがエンティティインスタンスを取得しているのか分からないが、あなたがそれらを変更または削除する場合は.AsNoTracking()を使用しないでください。

+0

エンティティオブジェクトは、IEntityChangeTrackerの複数インスタンスで参照することはできません –

+0

完了、私は実際に私の間違いを発見しました。私はDataGridから直接選択された項目をメソッドを削除するために渡していました。今すぐ選択したアイテムを取得してから、それをメソッドに渡して自分の問題を解決した後。 –

1

これを試してください。

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

私は試みましたが、同じです –

+0

は、削除メソッドが存在するDbContextの開始を確認する必要があります。 – sebu

関連する問題