我的用户如何使他们的.NET应用程序中的sqlCE数据库保持最新?

时间:2011-02-15 16:44:23

标签: c# .net sql-server-ce

我遇到了一个概念问题。我正在编写一个c#quiz应用程序,问题,答案和用户配置文件存储在随应用程序安装的sqlCE数据库中。用户运行应用程序,回答数据库中的问题。但是,他们也可以编写自己的问题,在某种日常更新后,这些问题应该可供同一应用程序的其他用户使用。

我无法解决的问题是导入和导出新的问答数据。我是一名LAMP开发人员,习惯于使用Web MySQL数据库,但从未使用像这样捆绑的数据库。我能想到的最好的是用户导出他们的新问题和答案集的转储(可能是csv),并将其上传到云中的主数据库。要更新其本地数据库,他们会导入整个基于云的数据库的csv并清空其本地数据库并插入csv的内容。

这种方式感觉不太对劲。这是一个小型的爱好应用程序,而不是商业;我真的只是想欣赏这个过程。我应该查看“检查更新”吗?

任何指针都非常赞赏,对此问题的非特定性质表示道歉。

2 个答案:

答案 0 :(得分:0)

这取决于“主数据库”的位置和位置。

在这个答案中,我假设您有一台Windows机器作为服务器,您可以在其中安装自己的服务以及数据库。

我将主数据库(可能是SQL Server Express Edition)包装在Web服务(WCF)后面。客户向Web服务询问更新并向Web服务发送新问题 Web服务至少有两种方法:

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

服务器上的那些方法将处理新问题的保存以及在master数据库中检索新的/更新的问题。客户端处理将所有问题存储在本地Compact SQL数据库中。

不要让用户处理额外的工具和文件来同步数据库。让应用程序完成工作。

答案 1 :(得分:0)

SQL CE SDK附带了客户端代理,这是一个使用SQL Server执行远程复制的DLL。如果您的“主数据库”是SQL Server,并且允许您对其运行IIS服务器代理,则内置复制。

请注意,这会执行合并复制。也就是说,比较本地数据库和远程数据库之间的差异,并发送使远程数据库与服务器匹配的语句。