[Silverlight学习笔记]关于利用WCF RIA Service进行通信并在客户端获取数据

本文介绍了如何使用Silverlight 4.0的WCF RIA Service进行客户端与服务器端的数据交互。重点讲解了EntityQuery和LoadOperation的作用及使用方法,并给出了具体的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实现客户端Silverlight程序与服务器端通信获取数据的时候使用Silverlight 4.0的WCF RIA Service服务是最方便的,可以非常迅速地配置好服务器端然后使用如下方法就可以在客户端Silverlight程序获取相应的数据:(操作的数据库表为User,它服务器端对应的Domain Service Class文件为UserDomainService)

UserDomainContext context=new UserDomainContext(); EntityQuery<User> query=context.GetUserQuery(); LoadOperation load=context.Load<User>(query); myListBox.ItemsSource=load.Entities;//或者context.Users等等 

现在来讲解为什么需要LoadOperation和EntityQuery这些操作,而不是直接定义UserDomainContext的实例就能通过context.Users直接获取数据:

1、直接定义UserDomainContext的实例context,然后通过或者context.Users、context.EntityContainer.GetEntitySet<User>()等等方法来直接获取数据集,这样是获取不到任何的数据的,即该数据集的Count为0,必须通过context.Load<User>(query)才能够将数据加载到UserDomainContext上下文中,即这样做才能够通过context.Users、load.Entities等方法获取数据集。

2、为什么需要EntityQuery?

context.GetUserQuery()返回的是一个可查询的数据集即EntityQuery<User>,而这个可查询的数据集中定义了LoadOperation加载数据的规则,比如:

EntityQuery<User> query=context.GetUserQuery(); LoadOperation load=context.Load<User>(query); 

此时context.Users、load.Entities等方式获得的是User数据表中全部的记录,类似于select * from User。

对EntityQuery进行适当的LINQ查询如下:

EntityQuery<User> query=from v in context.GetUserQuery() where v.UserName=="sa" select v; LoadOperation load=context.Load<User>(query); 

则此时通过context.Load方法异步加载的数据是满足上述LINQ条件的数据,即Load完之后通过context.Users、load.Entities等方式获得的数据集是UserName等于sa的User记录,类似于select * from User where UserName='sa'。

3、为什么需要LoadOperation?

通过上面的描述我们也了解到LoadOperation<User>的实例是通过context.Load<User>(query)异步加载后返回的。既然需要异步加载,一般都会在加载完成后去做一些善后工作,此时可以添加load.Completed这个事件,当异步加载完成之后会触发这个事件来完成我们的善后工作。

PS:

1、要使用WCF RIA Service服务,得装Silverlight Tools 4.0,上官网搜搜就能找到了。

2、WCF RIA Service服务的教程可以参看这个网页:http://www.silverlightchina.net/html/zhuantixilie/getstart/2010/0815/1761.html

转载于:https://www.cnblogs.com/wackelbh/archive/2011/03/14/1984036.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值