2013-08-03 4 views
0

고객 용 (출하시) 개인 정보의 데스크톱 응용 프로그램을 개발하고 싶습니다. 이 응용 프로그램에서는 응용 프로그램 사용자의 수준을 정의합니다. 한 사용자가 저장된 모든 인사 데이터를 볼 수있는 최상위 레벨 (상위)이고 두 번째 레벨 (첫 번째 하위)이 데이터 및 하위 데이터 등을 볼 수 있음을 의미합니다. 정확한 트리보기와 각 노드는 데이터 및 하위 데이터를 볼 수 있습니다. 이는 부모 공장에는 일부 차일드 공장이 있고 아동에게는 차일드가 있음을 의미합니다.오프라인 응용 프로그램 클라이언트 - 서버

온라인 응용 프로그램에서 이렇게 쉽게 처리 할 수 ​​있지만이 것은 오프라인입니다. 이제 그들은 자신의 애플리케이션에 직원 정보를 입력합니다 (각 사용자마다 다른 PC가 있음).

지금 당신은 예를 하나 병합에 충돌이, 채널 2는 다음 채널 1과 채널이 Parent.we에 큰 문제가 부모 DB에 차일 DB에 병합되어 .Ch3 그리고 4 장은 '5 장에 대한 CH1과 동일하게 그들의 데시벨 보내기 알고 ch1의 사람이 데이터를 ch3에 보내거나 부모가 모든 데이터를 가지고있을 때 한 사람이 한 사람의 국가 코드 (고유 키)를 변경하면 병합에서 기존의 병합을 업데이트 할 수 없으며 많은 문제점을 알 수 있습니다.

DB 병합에 대한 아이디어가 있으십니까? 내 데이터베이스에 대한

enter image description here


ABIT. personnelInformation은 PersonnelFactory라는 이름의 관련 테이블을 가지고있는 메인 테이블입니다. 각 행에는 사람 팩토리가 있으며 날짜와 종료 날짜와 인사 코드를 입력합니다. 그 공장에있는 사람 계급 (직업)을위한 테이블. DB의 작은 부분으로 문제를 이해할 수 있습니다.

+0

소리입니까? 복제물을 어떻게 다루고 싶습니까? 키에 속는 것을 피하기 위해 GUID를 키로 사용했습니다. – m0s

+0

당신은 사실이지만 많은 관련 테이블 중복과 함께 큰 DB에서, 업데이트되고 삭제 된 행은 문제이고 관계는 복잡한 것을 만든다고 보입니다. 질문은 : DLL이나 프로그램 등이 나에게 도움이되는지 아니면 C# 코드로 내 스스로 그렇게해야만하는지 등입니다. 그리고 syncframework 읽는 것이 도움이되지 않는 것 같습니다. –

답변

0

수행 할 수있는 작업은 서버 쪽에서 중앙 데이터베이스를 만드는 것입니다. 클라이언트 측에서는 클라이언트가 로컬에서 변경 작업을 수행하며 인터넷을 사용할 수있을 때마다 변경 내용을 업로드하고 해당 중앙 서버 데이터베이스를 통해 다른 사람이 변경 한 내용을 다운로드 할 수 있습니다.

Microsoft Sync Framework를 살펴보십시오. 복잡한 자동 병합 시나리오를 자동으로 처리합니다. 클라이언트에서 중복 키를 피하기위한 많은 솔루션이 있으며, 그 중 하나는 GUID 또는 uniqueidentifies입니다. 유일한 문제는 당신이 병합 전략을하지 않아도처럼 여기

는 유용한 자원

Introduction to Sync Framework Database Synchronization

Tutorial: Synchronizing SQL Server and SQL Express

+0

나는 sync가 1 개의 서버를위한 것이고 1 개의 클라이언트는 server-Client.i와 같은 트리 뷰의 많은 클라이언트가 많은 클라이언트를 처리 할 수없는 링크를 읽는다 고 생각한다. –

+0

@MamadR 아니요, One Server 많은 클라이언트를 포함한 모든 종류의 시나리오를 지원합니다. –

+0

흠 나에게 내가 보여줄 수있는 링크 나 튜토리얼을 보여줄 수있는 방법은 내가 많은 클라이언트 (오프라인)를 위해 할 수 있고 서버 - 클라이언트 strategy.and와 같은 treeview를 돕는다. 관련 테이블을 가진 큰 데이터베이스에서 복잡한 것을 처리 할 수있다. ? –