LinqToSql을 사용하여 행을 추가하려고 할 때 InvalidOperationException
이 표시됩니다. 우리는 그것을 사내에서 복제 할 수 없으며 고객 중 단 한 명인 경우 0.06 % 정도 발생하며 데이터베이스는 비교적 간단하게 변경됩니다. (단일 행 삽입 또는 단일 필드 업데이트) 여기Linq DataContext SubmitChanges ZombieCheck의 InvalidOperationException
Message:
This SqlTransaction has completed; it is no longer usable.
Stack Trace:
at System.Data.SqlClient.SqlTransaction.ZombieCheck()
at System.Data.SqlClient.SqlTransaction.Rollback()
at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
코드의 샘플 조각 (데이터베이스가 기본 키를 자동 생성)
TableName row = new TableName();
row.Description = "something";
row.Action = "action";
Context.TableName.InsertOnSubmit(row);
Context.SubmitChanges();
우리는 SQL 서버 2008 R2를 사용합니다. 삽입 및 업데이트는 서버에서 처리됩니다. 그러나 우리는 여전히 예외를 얻습니다. 이러한 업데이트 및 삽입이 발생하지 않도록해야하는 것은 없습니다. 의존성이나 다른 것들.
이러한 예외/좀비 검사/롤백이 발생하지 않도록하려면 어떻게해야합니까? 아니면 무엇이 문제입니까?
편집 :
추가 검사 후, SubmitChanges에 의해 수행되는 데이터베이스 업데이트()가 실제로 발생한다. 이 예외는 트랜잭션이 성공적으로 완료되고 데이터베이스 행이 새 값으로 업데이트 된 후에 호출됩니다. 주의해야 할
특정 코드 덩어리에서만 발생하는 문제입니까? 그렇다면 어떤 시점에서 '사용 중'블록 안에 있습니까? –
모든 데이터베이스 업데이트 함수는 DataContext SubmitChanges()를 수행하는 공통 함수를 호출합니다. 따라서 항상 실패하는 코드 줄과 동일합니다. – David