2015-02-02 5 views
2

데이터에 액세스하기 위해 먼저 Entity Framework 6.0 데이터베이스를 사용하여 Asp.Net MVC 5를 개발하는 동안 이상한 예외가 발생합니다.SaveChanges의 DbUpdateException이 계속 throw 됨

내가 기록을 삭제하려고하면

먼저,하는 DbUpdateException는 SaveChanges를에 발생합니다 :

이 예외가 다음 우리의 ExceptionFilter에 의해 체포되어
The DELETE statement conflicted with the REFERENCE constraint "ForeignKeyName". 
(...) 
The statement has been terminated. 

:

public void OnException(ExceptionContext filterContext) 
{ 
    // Opening popup 
    filterContext.ExceptionHandled = true; 
} 

지금까지, 모든 것이 벌금. 그러나 SavesChanges 메서드가 다시 호출되어 다른 엔터티를 업데이트하면 동일한 예외가 계속 throw됩니다.

나는 그것이 디버그 모드 (cf post Exception seems to be thrown repeatedly when debugging 참조)와 관련이 있다고 가르쳤으나 릴리스에서 같은 문제가 발생했습니다.

도움을 주시면 감사하겠습니다.

답변

1

삭제 예외가 발생하면 동일한 DbContext 인스턴스를 다시 사용하고있을 가능성이 큽니다. SaveChanges()가 실패하면 DbContext.ChangeTracker가 변경 내용을 추적합니다. 새 DbContext 인스턴스를 만들거나 변경 추적기를 지워야합니다.

+1

또는 컨텍스트의 변경 사항을 롤백하십시오. –

+1

2d 옵션을 선택하고 롤백 메소드를 작성했습니다 (참조 : [엔티티 프레임 워크 엔티티의 변경 사항 취소] (http://stackoverflow.com/questions/5466677/undo- 엔티티 프레임 워크 엔티티)). 고마워, 나는 예외를 처리 한 후에 엔티티를 정리해야한다는 것을 알지 못했다. –

관련 문제