0

TableAdapter을 사용하여 데이터베이스 테이블에 연결합니다.TableAdapter에서 동시성 위반을 캐치 및 처리

Update을 수행하고 다른 누군가가 동일한 행을 업데이트하면 동시성 위반 오류가 발생합니다. 예상대로.

그래서이 시점에서 나는 사용자에게 관계없이 저장하거나 난 그냥 Fill 업데이트 된 데이터의 사본하지만 그들은 덮어 쓸 것인지를 얻기 위해 수행 할 수 취소 할 경우 변경

을 취소 할 수있는 옵션을 제공? 데이터베이스에 저장된 데이터를 실제로 덮어 쓰도록 데이터 저장을 강제 실행하려면 어떻게합니까?

답변

3

SQLCommandBuilder를 사용하여 업데이트 문을 생성하는 경우 CommandBuilder.ConflictOption = ConflictOption.OverwriteChanges; 그리고 Update()를 다시하십시오.

+0

감사하지만 명령 빌더를 사용하지 않습니다. –

+1

그런 다음 Update SQL에서 기본 키 열만 사용하도록 자체 UpdateCommand를 생성해야합니다. – beater

0

테이블 어댑터를 마우스 오른쪽 단추로 클릭하고 '데이터 집합 디자이너에서 쿼리 편집'을 클릭하십시오.

데이터 세트 디자이너 창에서 TableAdapter를 선택하고 해당 특성으로 이동하십시오.

속성에서 Update 문을 확장하고 CommandText 속성으로 이동하십시오. update 명령에서 조건은 모든 조건을 제거하고 기본 키 열만 유지합니다. 예를 들면 :이 쿼리 혼자 차 키를 기반으로 데이터를 덮어 쓰기 때문에

UPDATE customer 
SET column1 = @column1, column2 = @column2 
WHERE pk_column = @pk_column 

지금 동시성 예외가 늘 다시 나타납니다.