演练:使用数据源配置向导创建偶尔连接的应用程序

更新:2007 年 11 月

从 Visual Studio 2008 SP1 开始,除了“配置数据同步”对话框外,还可以使用“数据源配置向导”来配置同步。本演练提供在运行数据源配置向导时通过合并 Synchronization Services 来开发偶尔连接的应用程序的分步说明。

“偶尔连接的应用程序”是可能不总是访问远程数据的应用程序。因为这些应用程序并不总是访问远程数据,所以它们使用位于客户端的本地数据库中的数据,并会定期同步远程数据库中的数据和本地数据库中的数据。Microsoft Synchronization Services for ADO.NET(Microsoft.Synchronization.Data 命名空间)帮助实现本地数据库和远程数据库之间的数据同步。最初可通过以下方法来创建此同步:使用“添加新项”对话框向应用程序中添加本地数据库缓存;或者运行“数据源配置向导”。在本演练中,您将采用后一种方法。

在本演练中,您将要执行以下任务:

  • 创建新的 Windows 窗体应用程序。

  • 运行“数据源配置向导”创建和配置具有本地数据库缓存的类型化数据集。

  • 创建一个用来显示数据并确认同步的 Windows 窗体。

  • 添加代码以启动数据库间的同步。

  • 添加消息框以显示已同步的记录的数目信息。

先决条件

若要完成此演练,需要以下组件:

  • 访问 Northwind 示例数据库的 SQL Server 版本。有关更多信息,请参见如何:安装示例数据库

  • 在运行 Visual Studio 的计算机上安装的 SQL Server Compact 3.5。

创建 Windows 窗体应用程序

由于您将要在 Windows 窗体中显示数据(以验证同步是否成功),所以本演练的第一步是创建新的 Windows 窗体应用程序。

说明:

对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您使用的 Visual Studio 版本及设置。有关更多信息,请参见Visual Studio 设置

创建新的 Windows 窗体应用程序

  1. 从“文件”菜单创建一个新的项目。

  2. 将项目命名为“OCSWalkthrough2”。

  3. 单击“Windows 窗体应用程序”模板,然后单击“确定”。有关更多信息,请参见 创建基于 Windows 的应用程序

    将会创建 OCSWalkthrough2 项目并将其添加到“解决方案资源管理器”中。

创建包括本地数据库缓存的数据源

由于本演练演示如何使用“数据源配置向导”来将 Synchronization Services 合并到应用程序中,因此下一步是启动该向导。此步骤启动该向导并创建一个基于 Northwind 示例数据库中 Customers 表的数据集。在选择要添加到数据集内的数据库表时,将选中启用本地数据缓存的选项。

创建包括本地数据库缓存的数据源

  1. 在“数据”菜单上单击“显示数据源”。

  2. 在“数据源”窗口中,单击“添加新数据源”启动数据源配置向导。

  3. 在“选择数据源类型”页上,使默认值“数据库”保持选中状态,然后单击“下一步”。

  4. 在“选择您的数据连接”页上执行下列步骤之一:

    • 如果下拉列表中包含到 SQL Server 版 Northwind 示例数据库的数据连接,请选择该连接。

      - 或 -

    • 单击“新建连接”打开“选择数据源”或“添加/修改连接”对话框并新建与 SQL Server 版 Northwind 数据库的连接。有关更多信息,请参见“添加/修改连接”对话框(通用)

  5. 如果数据库需要密码,请选择该选项以包括敏感数据,再单击“下一步”。

  6. 在“将连接字符串保存到应用程序配置文件中”页上单击“下一步”。

  7. 在“选择数据库对象”页面上展开“表”节点。

  8. 选择“Customers”表。

  9. 选中“启用本地数据库缓存”。

  10. 在“选择数据库对象”页上单击“下一步”。

  11. 在“选择要缓存的表”页上选择“Customers”。

    说明:

    对“同步模式”保留默认值“增量”。增量模式仅同步自上次同步以来在服务器上进行的更改。快照模式会用服务器上的当前表替换本地缓存的整个表。无论您选择哪种模式,都会首先将整个表加载到本地数据库缓存中,以便您始终从当前数据的完整集合开始。

  12. 单击“完成”。

  13. 如果某个本地缓存表的同步模式设置为“首次同步之后的新更改和增量更改”,则需要对 SQL Server 数据库进行更新,而且会打开“生成 SQL 脚本”对话框。默认情况下,该对话框中的两个选项均处于选中状态:

    • 为增量更改更新服务器。选中该选项可自动更新服务器,以便在关闭该对话框之后立即启用增量同步。

    • 在项目中保存 SQL 脚本供以后使用。选中该选项可将所生成的 SQL 脚本添加到项目中,以便可以在以后针对 SQL Server 数据库执行它们。还会生成撤消脚本并将它们添加到项目中。

  14. 单击“确定”。

在应用程序中启用同步

在完成先前步骤中数据源配置向导的运行之后,数据同步即配置完毕。现在,您的应用程序中包含以下内容:

  • 本地版本的 Northwind 数据库 (Northwind.sdf)。

  • 数据同步设置文件 (NorthwindCache.sync)。

  • 由数据源配置向导生成的类型化数据集 NorthwindDataSet.xsd。它包含用本地数据库填充其数据的 Customers 表。

    将运行初始同步,而且会将本地数据库缓存中的 Customers 表与服务器数据库同步。换言之,用当前位于服务器上数据库内 Customers 表中的数据填充本地 SQL Server Compact 3.5 数据库 (Northwind.sdf) 中的 Customers 表。

  • 一个包含脚本的 SQLScripts 文件夹,这些脚本可用于创建跟踪服务器变化的跟踪列、已删除项表和必要的触发器。

  • 一个包含脚本的 SQLUndoScripts 文件夹,这些脚本可用于移除已添加到服务器中的跟踪列、已删除项表和必要的触发器。

    说明:

    只有在有必要在服务器上进行修改时,才会创建 SQL 脚本。如果服务器已经具有已删除项表和跟踪列,将不会创建任何脚本。

  • 对以下 Microsoft Synchronization Services for ADO.NET DLL 的引用:

    • Microsoft.Synchronization.Data

    • Microsoft.Synchronization.Data.Server

    • Microsoft.Synchronization.Data.SqlServerCe

为应用程序添加同步功能

配置完数据同步后,您还必须将同步功能添加到应用程序中。具体而言,您必须添加用来启动同步过程的代码。将在窗体中添加一些控件来显示数据并启动同步进程。

首先,通过将“Customers”节点从“数据源”窗口拖到窗体中,来添加 DataGridView 控件。DataGridView 将显示本地数据库缓存(位于项目中的 Northwind.sdf 数据库)中的 Customers 表,以便验证本地数据库和远程数据库之间是否在进行数据同步。还可以添加一个按钮以启动同步进程。

创建数据绑定窗体以启动并验证数据同步

  1. 将“Customers”节点从“数据源”窗口拖动到“Form1”上。

  2. 将一个“按钮”控件从“工具箱”拖到“Form1”中。将此按钮的“Name”属性设置为“SynchronizeButton”,将它的“Text”属性设置为“Synchronize Now”。

  3. 双击“立即同步”按钮以创建按钮单击事件处理程序,并在代码编辑器中打开该窗体。

  4. 添加代码以启动同步进程,然后在数据集中重新填充“Customers”表。事件处理程序中的代码应与下面的代码类似:

    说明:

    声明 syncStats 变量的代码行将在本文档的稍后部分进行介绍。

    ' Call the Synchronize method to synchronize
    ' data between local and remote databases.
    Dim syncAgent As NorthwindCacheSyncAgent = New NorthwindCacheSyncAgent()
    Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = _
        syncAgent.Synchronize()
    
    ' After synchronizing the data, refill the
    ' table in the dataset.
    Me.CustomersTableAdapter.Fill(NorthwindDataSet.Customers)
    
    // Call the Synchronize method to synchronize
    // data between local and remote databases.
    NorthwindCacheSyncAgent syncAgent = new NorthwindCacheSyncAgent();
    Microsoft.Synchronization.Data.SyncStatistics syncStats;
    syncStats = syncAgent.Synchronize();
    // After synchronizing the data, refill the
    // table in the dataset.
    this.customersTableAdapter.Fill(this.northwindDataSet.Customers);
    

测试应用程序

测试应用程序

  1. 按 F5。

  2. 运行应用程序时,使用“服务器资源管理器”/“数据库资源管理器”(或其他数据库管理工具)连接到远程服务器数据库并修改某些记录。

    1. 在“服务器资源管理器”/“数据库资源管理器”中,查找远程数据库服务器(不是到 Northwind.sdf 的连接)上的 Customers 表。

    2. 右击 Customers 表,然后单击“显示表数据”。

    3. 修改一条或多条记录,然后提交更改。(导航关闭已修改的行。)

  3. 返回到窗体,然后单击“立即同步”。

  4. 验证对远程数据库的修改是否已同步到本地数据库并显示在窗体上。

  5. 关闭窗体。(停止调试。)

检索同步信息

调用“同步”方法时,该方法并不仅仅启动同步进程。“同步”方法还会返回“SyncStatistics”对象,您可以从该对象访问有关同步的信息。

访问同步统计信息

  • 在代码编辑器中打开“Form1”,然后在 SynchronizeButton_Click 事件处理程序的末尾处,接着先前步骤所添加的代码添加以下代码:

        MessageBox.Show("Changes downloaded: " & _
    syncStats.TotalChangesDownloaded.ToString)
    
    MessageBox.Show("Changes downloaded: " +
        syncStats.TotalChangesDownloaded.ToString());
    

测试应用程序

测试应用程序

  1. 按 F5。

  2. 运行应用程序时,使用“服务器资源管理器”/“数据库资源管理器”(或其他数据库管理工具)连接到远程服务器数据库并修改某些记录。

    1. 在“服务器资源管理器”/“数据库资源管理器”中,查找远程数据库服务器(不是到 Northwind.sdf 的连接)上的 Customers 表。

    2. 右击 Customers 表,然后单击“显示表数据”。

    3. 修改一条或多条记录,然后提交更改。(导航关闭已修改的行。)

  3. 返回到窗体,然后单击“立即同步”。

  4. 此时,将显示一个包含已同步记录的信息的消息框。

  5. 验证对远程数据库的修改是否已同步到本地数据库并显示在窗体上。

后续步骤

根据应用程序的要求,当在应用程序中配置本地数据库缓存后,可能还需要执行其他一些步骤。例如,您可以对此应用程序进行以下增强:

请参见

任务

演练:将偶尔连接的客户端应用程序与本地数据库一起部署

概念

偶尔连接的应用程序概述

SQL Server Compact 3.5 和 Visual Studio

修订记录

日期

修订

原因

2008 年 7 月

新增主题。

SP1 功能更改。