문제

누군가가 동기화 프레임 워크를 사용하여 C# .NET에서 PK 충돌 오류를 처리하기위한 올바른 방향으로 나를 지적 할 수 있습니까?

SQL Server 2008과 로컬 데이터 캐시 데이터베이스 (.SDF)간에 동기화하려고 노력하고 있으며 서버와 클라이언트 모두에서 충돌하고 서버 또는 클라이언트가 승리하지 않는 두 행을 유지하려고합니다.

동일한 PK ID를 가진 서버와 클라이언트에 새 행을 삽입하면 PK 충돌 오류가 발생합니다.

모든 제안은 감사 할 것입니다.

감사

도움이 되었습니까?

해결책 2

이것은 자동 증가 된 int 대신 PK 용 Guid를 사용하여 해결됩니다.

이를 통해 서버 또는 클라이언트가 삽입 한 각 행은 고유하고 잘 작동합니다.

추가 저장 공간 및 검색 시간 등과 같은 몇 가지 단점이 있지만, 이는 내가 기꺼이 살고 싶은 것입니다 (그리고 클라이언트가 얻는 데이터를 필터링하여 성능을 향상시키는 데 도움이됩니다).

도와 주셔서 감사합니다.

다른 팁

이러한 유형의 문제에 대한 일반적인 원칙은 자연 키를위한 열을 갖는 것입니다. 아이디어는 기본 키가 테이블에서 행을 고유하게 식별하는 반면, 자연 키는 행이 설명하는 객체를 고유하게 식별합니다. 충돌이 발생하면 서버가 승리하고 클라이언트 측에 새 행을 삽입하십시오. 새로운 PK가 발행되지만 자연 키는 동일하게 유지됩니다. 나중에 자연 키로 주문하여 그 행을 쉽게 찾을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top