0

VS2008 로컬 데이터 캐시 도구를 사용하여 SqlServer 2008 Db를 로컬 SQL CE 3.5와 동기화합니다. 서버에서 데이터 형식이 uniqueIdentifier이고 기본값이 newID() 인 PK가있는 테이블이 있습니다. 로컬 데이터 캐시를 통한 초기 동기화시 생성 된 DB는이 열의 기본값을 복사하지 않습니다. (여기에 설명 된대로 : http://msdn.microsoft.com/en-us/library/bb726037%28v=SQL.105%29.aspx, "다음 제약 조건이 FOREIGN KEY 제약 조건, UNIQUE 제약 조건, 및 DEFAULT 제약 조건 ... ")로컬 데이터 캐시 SyncTable 스키마가 복사되지 않았습니다. clientSyncProvider _ CreatingSchema가 실행되지 않습니다.

나는 비슷한 질문을 여기에서 발견했다 : MS Sync Framework: Table schema not copied to local db. 나는이 솔루션을 구현하려고 할 때

는하지만, 난 내 로컬 데이터 캐시 부분 클래스의 clientSyncProvider의 CreatingSchema 이벤트가 발생하지 않는 것을 발견했다.

어째서? 로컬 데이터 캐시의 스키마를 변경하려면 어떻게합니까?

아이디어를 제공해 주셔서 감사합니다.

+0

부분 공용 클래스'LocalDataCacheClientSyncProvider'와'CreatingSchema' 이벤트의 코드 숨김에서 스키마를 변경했습니다. 다음은 PK GUID의'defaultvalue'를'newid()'로 바꾸기 위해 작성한 것입니다 : 'If e.Table.TableName = "Users"Then' 'If (e.Schema.Tables ("Users" ("UserID"). DefaultValue = "NEWID()" '.Columns ("UserID"). 데이터 유형은 GetType입니다. (System.Guid) End If' 'End If' – Winks

답변

0

클라이언트 데이터베이스의 TableCreation 옵션 설정은 무엇입니까? SDF와 초기 스키마가 로컬 데이터베이스 캐시 마법사에 의해 작성된 경우, 이후의 동기화는 더 이상 기존 스키마를 삭제하지 않고 새로운 스키마로 대체하도록 TableCreation 옵션을 통해 지정하지 않는 한 더 이상 스키마를 작성하지 않습니다.

+0

TableCreation 옵션은'DropExistingOrCreateNewTable'입니다. – Winks