2011-02-15 55 views
0

我遇到了一個概念的問題。我正在編寫一個c#測驗應用程序,將問題,答案和用戶配置文件存儲在與應用程序一起安裝的sqlCE數據庫中。用戶運行應用程序,回答數據庫中的問題。但是,他們也可以編寫自己的問題,這些問題應該在某種日常更新之後提供給同一應用程序的其他用戶。我的用戶如何使他們的.NET應用程序中的sqlCE數據庫保持最新狀態?

我不能解決問題的方法是導入和導出新的問題和答案數據。我是一名LAMP開發人員,習慣於使用Web MySQL數據庫,但從未像這樣使用捆綁的數據庫。我能想到的最好的是用戶導出一個轉儲(可能是csv)他們的新問題&答案集將被上傳到雲中的主數據庫。要更新其本地數據庫,他們導入整個基於雲的數據庫的csv並清空其本地數據庫並插入csv的內容。

這樣感覺不太對勁。這是一個小型的愛好應用程序,不是商業應用程序。我真的只是想體會這個過程。我應該看看'檢查更新'嗎?

任何指針非常讚賞,道歉爲這個問題的非特定性質。

回答

0

這取決於您的「主數據庫」的位置和方式。

在這個答案我假設你有一個Windows機器作爲服務器,你可以安裝自己的服務以及數據庫。

我會在Web服務(WCF)後面包裝master數據庫(可能是SQL Server Express Edition)。客戶向Web服務請求更新並向Web服務發送新問題。
Web服務將至少有兩種方法:

void AddQuestion(Question question); 
Question[] NewQuestions(DateTime fromDate); 

在服務器上的這些方法會處理的新問題,並在主數據庫中的新的/更新的問題檢索保存。客戶端處理將所有問題存儲在本地Compact SQL數據庫中。

不要讓用戶處理額外的工具和文件來同步數據庫。讓應用程序完成這項工作。

0

SQL CE SDK附帶客戶端代理,一個使用SQL Server執行遠程複製的DLL。如果您的「主數據庫」是SQL Server,並且您被允許針對它運行IIS服務器代理,則複製是內置的。

注意這執行合併複製。也就是說,比較本地和遠程數據庫之間的差異,併發送使遠程數據庫與服務器匹配的語句。

相關問題