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

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

 

现在来讲解为什么需要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加载数据的规则,比如:

 

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

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

 

则此时通过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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值