本文主要是介绍关于利用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
这篇关于关于利用WCF RIA Service进行通信并在客户端获取数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!