2011-07-20 38 views
1

繼承人我的方案:我擔心SqlCeSyncClient應用刪除,然後插入,然後更新。我有一些情況下,一行可能會從另一個表中取消引用,然後被刪除。例如,想象一下:同步框架刪除不在客戶端應用

我有兩個表;客戶和區域,其中Customer.Area使用外鍵約束引用Area.Name

insert into Area values('Australia') 
insert into Customer values('customer1','Australia') 

- 發生同步。客戶端獲得2個插入。

update Customer set Area = 'New Zealand' where Area = 'Australia' 
delete from Area where Name = 'Australia' 

- 發生同步。客戶端得到1更新和1刪除

SqlCeClientSyncProvider嘗試應用刪除第一個,它由於客戶端上的參照完整性約束而無法執行。

我的第一個問題是:爲什麼地球上的微軟代碼讓SyncClient進程在刪除所有參照完整性規則時首先刪除了FIRST?他們不應該刪除LAST嗎?

我的下一個問題是:我設法通過檢查代碼並自己編寫整個ApplyChanges方法來顛倒順序......但是即使當我這樣做時刪除也沒有應用。數據集中是否存在某些內部事物,這意味着您無法更改處理順序?

回答

0

的問題是沒有從操作的順序(刪除,更新,插入,...),但是你放置你的synctables ...的順序

你應該先和客戶表後同步區表。