首先:我们使用的是Visual Studio 2010,.Net 4和SQL Server 2008 R2(以及C#)
我们目前正在将旧应用程序迁移到.Net。事实上,这是一个完整的重写。
该应用程序将是服务器 - 客户端设置,完全符合“偶尔连接”的描述。
典型安装涉及10个客户端和一个服务器。客户端正在从数据库访问一个半静态数据池(让我们称之为核心数据)。
客户还会每天(另外一个表)添加一系列新条目(大约700到800个)。让我们称之为“帖子”。
现在我们希望将本地数据库作为缓存用于两个目的:
对于我们的主要客户,核心数据包含大约200000个条目,每天大约有100个更改。我们希望在客户端上缓存这些数据,因为我们需要快速访问它。
对于其他几个较小的客户,我们没有运行专用服务器。其中一台客户端机器正在完成这项工作。如果用户关闭“服务器”,则客户端将无法保存新的帖子。这实际上是一个严重的问题,经常发生(未经训练的用户)。我们需要某种缓存。
现在,我读到了可以通过Visual Studio添加的本地数据库缓存,我已经试过了。
理论上,这正是我们所需要的。然而,实际上我遇到了一些困难:
我注意到在创建本地缓存DB时,本地数据库中缺少外键关系。我看到这被记录为“按预期工作”,但是我无法找到如何正确包含它们的说明,因此我可以在本地数据库中依赖它们,我仍然可以同步。
在我自己添加关系之后,我仍然最终遇到了同步问题:
我有两个表,表A和表B.我在表A上添加了一个条目,在表B上添加了30个参考表A中的条目。
同步时,表A正确同步 - 在表B上没有同步任何条目。
我在表B中添加了另外30个条目并尝试再次同步。这次它忽略了前30个条目并尝试仅同步新的30个条目。其中只有一个成功同步。我显然在这里遗漏了一些东西。
一个纯粹的理论问题:同步可以是“仅上传”,“仅下载”等。我们需要的是“仅发布”。因为我无法使整个设置工作,所以我会在没有自己测试的情况下添加这个问题:
如果我同步“仅上传”并在同步后清除本地数据库中的所有条目会发生什么?是否会在下次同步时从服务器中删除条目?如果是,我们仍然可以为此目的使用同步服务,还是应该使用DataSet并将条目手动发布到服务器?