ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:264.44KB ,
资源ID:5788906      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5788906.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(WCF RIA Service实例应用Word文档格式.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

WCF RIA Service实例应用Word文档格式.docx

1、Microsoft Silverlight 4 Tools for Visual Studio 2010Silverlight 4 Tools中只有Entity Framework To Domain Service的工具,要Linq To Domain Service必需安裝WCF RIA Services Toolkit新增Silverlight專案新增Silverlight Application時會跳出New Silverlight Applicaion視窗,Enable WCF RIA Services必需勾選,才會自動產生WCF的Proxy。如果忘了勾,事後也可以在Silverli

2、ght專案的內容,選擇Web Application專案(只能選Web Application專案,因為需要Web Services)。新增Linq To Sql Classes隨便連一個資料庫,沒資料庫沒資料的,可以下載使用Microsoft SQL Server Community Projects & Samples中的AdventureWorks2008R2作為測試資料庫,隨便拉幾個Table。很重要一定要Build,不然Domain Service的精靈一定找不到資料。剛開始我不知道,是找了一二小時才發現這問題的,嘔死了。新增Domain ServiceDomain Service分

3、類在Web下。有一些設定如可否編輯,而MetaData是關係資料驗證與資料顯示如:DataGrid自己中文標題或驗證錯誤訊息等中繼資料,會額外在產生一個檔案以partial class方式增加。事實上Domain Service Class只是精靈產生存取Linq的Code,如果事後Model有修改怎麼辦,目前只有砍檔案重新產生Domain Service Class,不過有看過一些文章說為用partial class方式分隔二個檔分別是自動產生與自己增加的,刪除時不會刪到人工增加的Code。Silverlight存取Domain Service這時Silverlight的專案可以看到自動產生

4、的Code。Code寫起來跟一般Linq的寫法很像,只是是非同步最後必需要用Load是取得資料。比傳統WCF好的地方是,是送Query去取資料,彈性比較大。Domain Service實作方式它是WCF也是Web Service,只是自動產生的。在Web.Config增加一個httpModules,當網址為Domain Service Class + .svc時處理。如SilverlightRIA.Web.DomainService1會把 . 換成 - 加上.svc,如SilverlightRIA-Web-DomainService1.svc而Silverlight專案會自動產生關連與Code

5、。在SL中查询时,记得using System.ServiceModel.DomainServices.Client,否则会出现xxx.GetxxxQuerys()不出现Take、Where等等扩展方法,也不能 from x in xxx.xxxx where。会报如下异常:未能为源类型“System.ServiceModel.DomainServices.Client.EntityQuery”找到查询模式的实现。找不到“Where”。根据本人归纳,RIAService可以分为以下几个部分1、ADO.NET数据实体模型:这是数据对象,是实际的数据库对象的一个模型对象,操作他就相当于操作真实的数

6、据库,当然,模型的组成部分在建立的时候是可以自己设置的。模型的概念我就不说了,高人很多,我也只是了解到我能用到的部分。2、DomainService类:该类在创建时,设置对数据模型的操作方式及与客户端的关心,自动生成数据操作的添加、删除、修改、查询方法,同时也可以自定义自己的方法或函数。3、DomainContext类:这个是在创建好DomainService类后,Silverlight项目自动生成的类,当然这个类的名字空间是在对应的RIAService所在的项目的名字空间内。说实话,数据模型和DomainService建立好以后,在SL上最需要关注的就是DomainContext类了,因为今

7、后的操作和数据获取都是看他的了,DomainService仅是做一个默默的数据提供者。这个类也类似于WCF中生成的代理类。4、(Entity)类:SL除了自动生成相应的DomainContext类外,还会自动生成一个数据项的类,这个类对应于数据模型的单元数据。在今后的数据操作中可以用到。 在整个RIAService中,这四个东西共同发挥作用,下面具体说说他们是怎么工作的。数据模型就不说了,像是数据库的一个投影,操作他就等于在操作数据库。但是在RS中,我们不用直接操作他,而是靠DomianSerivce来操作。DomianSerive可以在客户端用,也可以在服务器端用,在服务器端用还没有测试过,

8、不过这个东西的出现主要就是为了SL服务的,所以重点还是在于研究在SL中怎么使用它。SL是客户端的,而DomianService是在服务器端的,于是,老方法,用一个代理来变相的使用他,这个代理就是DomianContext。DomianContext才是我们需要重点研究的东西,他是一个类,包含了在SL上操作数据说需要的所有方法和属性。以数据的增删查改举例说明在客户端获取数据,需要使用到DomianContext的Load方法,在DomianContext中有一个(EntitySet)属性具体名称要看创建数据模型和DomianService时给数据命的名称。在DomianContext类中有一个G

9、etXXXQuery()的方法,这个方法对应于DomianService的查询方法,可能你会误以为直接调用这个方法,就可以得到数据了,其实不然,这个方法获得的只是一个查询实例,不会返回具体数据。实际上DomainContext获取数据就是通过Load方法,讲数据填充到这个EntitySet属性里,这个EntitySet属性就,然后我们的数据空间就通过绑定这个EntitySet来显示数据。Load方法需要一个参数,这个参数就是一个查询实例(EntityQuery)代码如下MyDomainServiceH mh = new MyDomainServiceH();EntityQuery query;

10、query = from t in mh.GetTestTableCanQuery() select t;mh.Load(query);/这个查询不做任何筛选和排序,因此也等效于mh.Load(mh.GetTestTableCanQuery();dataGrid1.ItemsSource = mh.TestTables;这样就可以写一个自定义的Linq查询来获取数据,也就是说,DomianContext通过传递一个查询作为参数来获取所需的数据,不过有个地方需要注意,DomianService中需要在查询方法上指定一个签名Query(IsComposable = true) 即可自定义查询。注意

11、mh.TestTables 在执行Load方法前,这个TestTables是空的,在执行之后,他就被装满了数据了,这个地方有点类似DataSet的填充和使用。获取数据还是比较简单的,但是如何添加、修改、删除数据呢?这个地方可能又会误以为执行DomainContext的添加删除和修改方法即可,但是你会发现,在DomainContext中根本没有这些方法,为什么呢?DomianService不是生成了这些方法吗?为什么DomianContext中没有对应的方法。DomianService生成数据操作的方法并不会给DomianContext直接使用,并不是我们熟悉的传递参数调用方法就可以直接操作数据

12、了的。由于DomianContext是用于Sl的,Sl是客户端的,因此MS在这个地方设计得也很巧妙,不提供直接操作数据的方法给DomianContext,避免开发者忽略了数据传输频繁读取数据库的问题。以本例来说,前面我们不是得到了mh.TestTables吗?我们一切的添加删除修改方法都操作这个东西就可以了。但是这还不够,对mh.TestTables的操作是在客户端内存中的,并没有改变数据库,DomainContext还提供了一个方法SubmitChanges();这个方法的作用就是将所有的数据变化都同步到数据库中,这样,DomianContext就采用了一种批量同步的方式来对数据库进行操作,

13、而不用执行每一个数据操作都要反复的读取数据库和传递数据。基本上所有的数据操作都是在EntitySet上完成,然后由DomianContext提交同步。/添加 TestTable tt = new TestTable(); tt.Text = DateTime.Now.ToString(); mh.TestTables.Add(tt); mh.SubmitChanges();/删除 mh.TestTables.Remove(mh.TestTables.Single t.ID = 27);/修改 mh.TestTables.Single t.ID =30).Text=DateTime.Now.To

14、String();看到代码,就很清楚了,对数据的操作就类似对DataTable的操作一样,然后调用个SubmitChanges方法就可以将数据的变化同步到数据库了。很方便,只是稍微和传统的方式不太一样,一开始本人在次走了不少弯路。不过,这个EntitySet不同于DataTable或者DataView,操作起来可能不太顺手,不过习惯就好,我的例子中用的Linq的方式来对数据定位并修改。还有个地方需要注意,如果是用的多个事件来执行数据库操作,不同的DomianContext的EntitySet是不同的,也就是说,可能我们需要定义个全局的DomainContext实例来周旋于不同的事件中。当然如果不嫌性能差,在不同的事件中,也可以定义新的局部DomainContext实例来完成操作,但是注意,定义局部的DomianContext实例时,别忘记要通过Load方法获取一次EntitySet,否则,这个实例中的EntitySet将是空的,无法操作。官方相关资料:WCF RIA Services

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2