我正在尝试开发一个自定义同步提供程序,以使用WCF服务在Internet上同步文件.
我们已经有了文件传输服务,它正在生产中,但我需要在它上面实现自定义同步提供程序.我在这里检查了Braynt Likes博客中的解决方案,但这并不能满足我的需求.
我们非常感谢您提供的任何建议,指导或示例代码?
我正在尝试创建一个在线应用程序,它可以将运行在Android设备上的SQLite数据库与运行在服务器上的SQL同步.我们有一个在.NET和Android上运行的企业应用程序; 我们需要同步他们的数据以保持一致性.它将是双向同步:应同步发生的任何数据更改(在客户端或数据库服务器上).
我看到这可以通过许多方法实现,但是对于这种情况,我建议使用Microsoft Sync Framework,因为它自动化同步过程并且也可以方便.我做了一些关于使用Sync框架的研究,并在Microsoft网站上找到了一些示例.但主要是他们正在进行离线同步:他们基本上在桌面上进行同步过程,其中源数据库和目标数据库在同一台机器上.但对于我的情况,情况并非如此.我在客户端计算机上有SQLite,在服务器上有SQL,所以这里似乎需要一个在线同步过程.
我该怎么做到这一点?
我正在寻找一个同步框架用于与Sql Azure同步sql server express和sqlite数据库.我们已经使用Sync Framework 2.1与sql server express和Sql Azure一段时间取得了很好的成功,但Sync Framework 2.1已经相当老了.有谁知道Sync Framework是否已经死了?如果是这样,有没有人知道一个好的选择.
我使用 MS Sync Framework 将我的 SQL Server 实例与本地 SQL CE 文件同步,使其能够与我的 Windows 应用程序脱机工作。
我使用 GUID 作为键。在我的桌子上,我在 2 列上有一个唯一索引:user_id和setting_id:
usersettings table
------------------
id PK -> I also tried it without this column. Same result
user_id FK
setting_id FK
value
Run Code Online (Sandbox Code Playgroud)
现在我执行以下操作:
我在两个数据库中的该表中创建了一个新记录 - SQL Server 和 SQL CE 具有相同user_id和setting_id.
这应该可以工作并将数据合并在一起,因为这可能发生在现实生活中。但是在同步时出现错误,说唯一键约束导致错误。密钥对已存在于表中。
不能将重复值插入到唯一索引中。[ 表名 = user_settings, 约束名 = unique_userid_settingid ]
为什么 MS 同步不能处理?它不应尝试再次插入密钥对。如果需要,它应该更新值。
我们想要同时使用NHibernate和Microsoft Sync Framework - 有没有人有结合这两个框架的经验?
谢谢,
阿什利
Sync Framework在逐个表的基础上同步数据,但我的实体在多组相关的父子表中进行了规范化.这会给我的应用程序带来问题,其中父行可能出现在要处理的服务器上,但子行可能不会出现几秒钟.如果我的客户端应用程序和服务器之间存在连接问题,则子行可能不会出现一段时间.
如何设计我的应用程序来处理与父表分开同步的子表?
我正在研究的具体方案是从后端系统接收服务器上的工作订单,以便使用平板电脑或PDA分发给现场工程师.这些工单是大型复杂的实体,可能涵盖了6个表.工程师完成他们的工作,同步结果,服务器将完成的工作订单返回到后端系统.
到目前为止,我自己的一些想法发布在下面.
我们正在尝试将Microsoft Sync Framework实现到我们的应用程序中,该应用程序使用NHibernate持久化它的域.
我们遇到的一个问题是,在Sync Framework更改了您的初始数据库结构(添加影子表和触发器)之后,当您尝试将对象插入数据库时,NHibernate似乎会因为抛出toomanyrowsaffectedexception而感到不安.
我发现这篇文章的解决方案是在每个更新语句周围添加SET NOCOUNT ON和OFF,但由于表结构由nhibernate自动生成,同步触发器由Sync Framework自动生成,因此手动调整所有触发器实际上不是一个选项.
http://www.codewrecks.com/blog/index.php/2009/03/25/nhibernate-and-toomanyrowsaffectedexception/
我尝试按照此问题中的描述设置sql server 2008属性NOCOUNT:哪里是设置NOCOUNT的最佳位置? 但是这导致了StaleStateException(受影响的行数为-1,预期为1).
您是否知道是否有办法配置同步框架以在其触发器中自动设置这些NOCOUNT语句?或者有没有办法告诉NHibernate期望更多/更少的行被更改?或者也许你们中的任何人都有一个自动脚本来将这些NOCOUNT语句添加到同步框架的触发器中.
Thx提前!
它出现在这里:
SyncAdapter notesSyncAdapter = notesBuilder.ToSyncAdapter();
((SqlParameter)notesSyncAdapter.SelectIncrementalInsertsCommand.Parameters["@sync_last_received_anchor"]).DbType = System.Data.DbType.Binary;
((SqlParameter)notesSyncAdapter.SelectIncrementalInsertsCommand.Parameters["@sync_new_received_anchor"]).DbType = System.Data.DbType.Binary;
Run Code Online (Sandbox Code Playgroud)
用户拥有对表、架构和数据库的所有权限。知道这仍然会抛出这个异常吗?
更多细节:SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();
builder["数据源"] = "achernar"; builder["用户名"] = "sbbf974"; builder["密码"] = "随便"; builder["集成安全性"] = false; builder["初始目录"] = "粘性";
不是严格的编程相关,但我不知道在哪里发布这个问题:Sync Framework是Visual Studio 2010中真正不可或缺的组件吗?
从我读到的关于Sync Framework的内容来看,它是一个帮助开发人员"跨多个数据存储同步数据"的工具,(引自维基百科关于Sync Framework的文章中的引用文本)这项任务似乎并不是Windows的核心任务. .NET Framework或Visual Studio.
由于我的编程活动都没有涉及任何类似于"跨多个数据存储同步数据"的事情,我认为最好卸载Sync Framework,特别是考虑到我的Windows磁盘空间不足的事实开发箱.但是,当我尝试卸载Sync Framework时,出现了一个警告,Visual Studio依赖它,因此如果我卸载它可能无法正常工作.
所以,不用多说:我可以在不破坏Visual Studio 2010的情况下卸载Sync Framework吗?
我发现很难找到Sync Framework 2.1的条目。我可以使用任何好的教程或示例项目吗?
我的目标是将客户端与.NET 4.5和Microsoft SQL Server 2012 LocalDB与带有Microsoft SQL Server 2012的Windows 2008 R2服务器同步。
我想知道如何在客户端和服务器上编写一个同步提供程序。
是对的,MS SQL Server同步框架的提供程序不支持“更改跟踪”?我必须编写自己的提供程序吗?管理员如何管理服务器的“元数据”?
非常感谢您的帮助!