2017-12-18 26 views
0

을 :dbSet 사용하여 삭제할 수 없습니다 - 내가 EF6를 사용하고 있는데이 같은 엔티티 삭제하려고 엔티티 프레임 워크

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

시도해보십시오.

+0

시도했지만 동일합니다. –

+0

은 삭제 메서드가있는 DbContext 초기화를 확인해야합니다. – sebu