博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
移动设备数据访问技术三
阅读量:6431 次
发布时间:2019-06-23

本文共 4632 字,大约阅读时间需要 15 分钟。

1.向 N 层应用程序添加本地数据库缓存

  Visual Studio 上下文中的“本地数据库缓存”是 SQL Server Compact 数据库,

  该数据库配置为使用 Microsoft Synchronization Services for ADO.NET 与远程数据库进行数据同步。

2.向 RefactorNTierWalkthrough 添加本地数据库缓存

  由于本地数据库缓存是一个位于客户端上的 SQL Server Compact数据库,
  因此将本地数据库缓存添加到 RefactorNTierWalkthrough客户端项目上。
  本例将缓存 Customers 表,因此将本地数据库缓存命名为 CustomersCache。
  a)在“解决方案资源管理器”中右击“RefactorNTierWalkthrough”,再单击“添加新项”。
  b)单击“本地数据库缓存”模板。

  c)在“名称”中键入“CustomersCache”。
  d)单击“添加”。
  “配置数据同步”对话框随即打开。

  此时的项目结构:

3.在现有数据服务中启用同步
  生成的同步组件已添加到 DataService 项目中,但还需要通过服务来实现它们。
  生成的 SyncContract 包含服务所需的信息。此信息在文件中显示为注释。
  修改DataService项目的App.config:

View Code

 

4.向现有的数据服务添加同步服务操作
修改DataService项目的CustomersCache.Server.SyncContract

View Code
public partial class Service1 : object, ICustomersCacheSyncContract {                private CustomersCacheServerSyncProvider _serverSyncProvider;                public Service1() {            this._serverSyncProvider = new CustomersCacheServerSyncProvider();        }                [System.Diagnostics.DebuggerNonUserCodeAttribute()]        public virtual SyncContext ApplyChanges(SyncGroupMetadata groupMetadata, DataSet dataSet, SyncSession syncSession) {            return this._serverSyncProvider.ApplyChanges(groupMetadata, dataSet, syncSession);        }                [System.Diagnostics.DebuggerNonUserCodeAttribute()]        public virtual SyncContext GetChanges(SyncGroupMetadata groupMetadata, SyncSession syncSession) {            return this._serverSyncProvider.GetChanges(groupMetadata, syncSession);        }                [System.Diagnostics.DebuggerNonUserCodeAttribute()]        public virtual SyncSchema GetSchema(Collection
tableNames, SyncSession syncSession) { return this._serverSyncProvider.GetSchema(tableNames, syncSession); } [System.Diagnostics.DebuggerNonUserCodeAttribute()] public virtual SyncServerInfo GetServerInfo(SyncSession syncSession) { return this._serverSyncProvider.GetServerInfo(syncSession); } } [ServiceContractAttribute()] public interface ICustomersCacheSyncContract { [OperationContract()] SyncContext ApplyChanges(SyncGroupMetadata groupMetadata, DataSet dataSet, SyncSession syncSession); [OperationContract()] SyncContext GetChanges(SyncGroupMetadata groupMetadata, SyncSession syncSession); [OperationContract()] SyncSchema GetSchema(Collection
tableNames, SyncSession syncSession); [OperationContract()] SyncServerInfo GetServerInfo(SyncSession syncSession); }

 

5.发布服务
6.更新服务引用 
7.修改Form1.cs

  添加"加载数据"后台代码

View Code
private void button1_Click(object sender, EventArgs e)        {            using (var client = new ServiceReference1.Service1Client())            {                //获取本地的customer表                var customersTableAdapter                   = new LocalNorthwindCustomersTableAdapters.CustomersTableAdapter();                northwindDataSet.Customers.Merge(customersTableAdapter.GetData());                //使用wcf获取远端的Order表                northwindDataSet.Orders.Merge(client.GetOrders());            }        }

 

8.运行测试.

9.同步数据

  现在表示层已设置就绪,可以从正确的源显示表,下一步是添加代码来启动同步。
  将在窗体中添加一个按钮来启动同步进程。

  修改Form1.cs

  添加"同步数据"后台代码:

View Code
private void button2_Click(object sender, EventArgs e)        {            CustomersCacheSyncAgent syncAgent = new CustomersCacheSyncAgent();            using (ServiceReference1.CustomersCacheSyncContractClient syncClient = new ServiceReference1.CustomersCacheSyncContractClient())            {                syncAgent.RemoteProvider = new Microsoft.Synchronization.Data.ServerSyncProviderProxy(syncClient);                Microsoft.Synchronization.Data.SyncStatistics syncStats = syncAgent.Synchronize();                northwindDataSet.Customers.Merge(new LocalNorthwindCustomersTableAdapters.CustomersTableAdapter().GetData());                string syncSummary = "Total changes downloaded: " +                syncStats.TotalChangesDownloaded.ToString() + Environment.NewLine +                "Last successful synchronization: " +                 syncStats.SyncCompleteTime.ToString();                MessageBox.Show(syncSummary);            }        }

 

10.运行测试

11.完成

 

转载请注明出处:http://www.cnblogs.com/refactor 

你可能感兴趣的文章
你真的懂volatile吗
查看>>
Android 编译时注解-提升
查看>>
说说 Spring AOP 中 @Aspect 的高级用法
查看>>
Workbox CLI中文版
查看>>
贝聊亿级数据库分库分表实践
查看>>
同时连接gitlab和github
查看>>
vuex源码分析
查看>>
tornado+datatables分页
查看>>
集成 Kubernetes 与 Cloud Foundry,IBM自有一套
查看>>
php 中英文字符分割
查看>>
No module named yum
查看>>
Shell处理用户输入参数----getopts
查看>>
【函数】06、装饰器的应用
查看>>
v$sysstat
查看>>
剑指offer 66通关纪念
查看>>
医疗信息化 医学 医院管理 医疗器械 资料下载
查看>>
nginx.conf 示例配置
查看>>
在办公电脑上设置日志服务器监控思科和华为设备
查看>>
python 字符串替换
查看>>
我的友情链接
查看>>