日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一)

發(fā)布時(shí)間:2025/4/5 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
數(shù)據(jù)庫LINQ TO SQL在Silverlight中的應(yīng)用(WCF)------學(xué)習(xí)筆記(一)

步驟:

1. 創(chuàng)建SILVERLIGHT應(yīng)用程序

2. 創(chuàng)建LINQ TO SQL [注意序列化的問題]

3. 創(chuàng)建WCF

4. 在SILVERLIGHT中應(yīng)用WCF

1. 創(chuàng)建SILVERLIGHT應(yīng)用程序

我用的是Visual Studio 2008 professional和Expression Blend,我通常喜歡用Visual Studio來創(chuàng)建Silverlight工程.

記得一定要選擇上面那個(gè), 因?yàn)橹笠覥#項(xiàng)目中添加WCF

點(diǎn)“確定”后,我們會(huì)看到在我們新建的解決方案中有2個(gè)項(xiàng)目. 之后要做的就是在圖片中已選的項(xiàng)目?jī)?nèi)添加LINQ TO SQL和WCF。

2. 創(chuàng)建LINQ TO SQL [注意序列化的問題]

完成好第一步后,就可以在C#項(xiàng)目里添加LINQ TO SQL了. 當(dāng)然, 首先我們已經(jīng)在SQL SERVER里添加好了一個(gè)表,叫TEACHER好了,用來存放老師的一些信息, 內(nèi)有列: TeacherID, Name, Desciption, ImageUrl.

OK,添加一個(gè)LINQ TO SQL。

添加好LINQ TO SQL后,我們從"服務(wù)器資源管理器"里把TEACHER表拖到LINQ TO SQL里. 這時(shí),一定要注意一個(gè)地方, 如果我們要在之后的SILVERLIGHT項(xiàng)目里用到自定義的LINQ TO SQL類(比如List<Teacher>, List<Custom>等), 需要修改屬性"序列化模式"為"單向"

?

3.創(chuàng)建WCF服務(wù)

為SILVERLIGHT添加WCF服務(wù),如果您安裝了VISUAL STUDIO 2008 SP1和SILVERLIGHT TOOLS,就可以直接在“添加新建項(xiàng)”里找到"啟用Silverlight功能的WCF服務(wù)", 還有,一定得在“C#項(xiàng)目”里添加, 在SILVERLIGHT項(xiàng)目里添加是找不到WCF服務(wù)的.

當(dāng)然,您也可以直接添加WCF 服務(wù), 不過添加后需要修改一些配置才能支持Silverlight.比較麻煩.

添加好WCF服務(wù)后,我們就可以開始在開始寫代碼了, 進(jìn)入WCFTeacher.svc

  • namespace?IZX.cc_Silverlight
  • {
  • ????[ServiceContract(Namespace?=?"")]
  • ????[AspNetCompatibilityRequirements(RequirementsMode?=?AspNetCompatibilityRequirementsMode.Allowed)]
  • ????public?class?WCFTeacher
  • ????{
  • ????????TeacherDataContext?db?=?new?TeacherDataContext();
  • ????????
  • ????????[OperationContract]
  • ????????public?List<Teacher>?GetTeacher(int?teacherID)
  • ????????{
  • ????????????//這里使用的是LINQ語言,在這里我們不詳細(xì)介紹它了.下面的意思是通過teacherID找到指定的TEACHER表中的所有列
  • ????????????var?teacher?=?from?p?in?db.Teacher?where?p.TeacherID?==?teacherID?select?p;
  • ????????????//返回List<Teacher>
  • ????????????return?teacher.ToList<Teacher>();
  • ????????}
  • ????????//?如果要添加更多操作,請(qǐng)使用?[OperationContract]?標(biāo)記它們
  • ????}
  • }
  • 如果您使用的是"啟用Silverlight功能的WCF服務(wù)", 并沒有實(shí)現(xiàn)接口,所以我們沒有看到IWCFTeacher.cs, 而是直接在WCFTeacher.svc.cs文件中編寫上面的代碼. 上面的代碼中只實(shí)現(xiàn)了1個(gè)功能,就是從TEACHER表中返回指定TEACHERID的所有列。如果您要添加其他方法,需要在每個(gè)方法前加入[OperationContract].

    另外,[AspNetCompatibilityRequirements(RequirementsMode?=?AspNetCompatibilityRequirementsMode.Allowed)]這句的意思是添加ASP.NET與WCF的兼容.

    還要需要解釋的是這里我們用到了返回值List<Teacher>, Teacher是我們的自定義的類,所以前面的LINQ TO SQL的屬性里我們一定要改序列化模式,要不然在SILVERLIGHT遠(yuǎn)程調(diào)試時(shí)WCF服務(wù)會(huì)出錯(cuò)

    4. 在SILVERLIGHT中應(yīng)用WCF

    搞定完上面的步驟后,我們就可以跑到SILVERLIGHT項(xiàng)目中“添加服務(wù)引用”了

    在添加窗口需要注意的是如果你是用VS2008進(jìn)行調(diào)試的話,一定要將LOCALHOST的端口固定,比如固定成“63031”,如果您是自己用IIS建的網(wǎng)站里調(diào)試,就不需要注意這些了, WCF需要在一個(gè)固定的區(qū)域里才能有效,比如"http://localhost:63031/WCFTeacher.svc"或"http://192.168.1.21/WCFTeacher.svc".

    你也可以點(diǎn)“發(fā)現(xiàn)”,VS將自動(dòng)找到解決方案里的WCF服務(wù)。

    另外,你也可以把命名空間改成自己想要的名字, 為了以后在SILVERLIGHT應(yīng)用找更加容易識(shí)別.

    添加完“服務(wù)引用”后,你就可以在SILVERLIGHT代碼中應(yīng)用我們剛在WCF服務(wù)代碼中寫的方法了.

    但是因?yàn)槲覀僕CF代碼中使用到了LIST,所以我們需要在SERVICE REFERENCE目錄下的你剛剛創(chuàng)建的WCF服務(wù)引用中點(diǎn)右鍵,配置服務(wù)引用。將集合類列改成"System.Collections.Generic.List"

    如果你修改了C#項(xiàng)目中WCF服務(wù),需要生成解決方案,然后SERVICE REFERENCE目錄下點(diǎn)右鍵,更新服務(wù)引用

    在SILVERLIGHT中應(yīng)用我們?cè)赪CF中寫的方法,具體代碼如下:

    1.首先我們要在使用的類中聲明:

  • WCFTeacherClient?client?=?new?WCFTeacherClient?();
  • 2. 然后添加完成事件,并執(zhí)行異步

  • //添加完成事件
  • client.GetTeacherCompleted?+=?new?EventHandler<GetTeacherCompleted?EventArgs>(client_GetTeacherCompleted);
  • //執(zhí)行GetTeacher方法,返回值在client_GetTeacherCompleted中操作
  • LectureDB.GetTeacherAsync(lectureID);
  • 3. 在client_GetTeacherCompleted方法中處理我們得到的數(shù)據(jù)

  • private?void?client_GetTeacherCompleted(object?sender,?GetTeacherCompleted?EventArgs?e)
  • ????????{
  • ????????????if?(e.Error?==?null)?//如果在執(zhí)行異步過程中沒有出錯(cuò)的話?
  • ????????????{
  • ????????????????foreach?(var?its?in?e.Result)?//e.Result就是我們從WCF服務(wù)得到的返回值?
  • ????????????????{
  • ????????????????????its.Name;?//得到老師的名字?
  • ????????????????????its.ImageUrl;?//得到老師的圖片地址?
  • ????????????????????//.........等等,你要添加的其他操作?
  • ????????????????}
  • ????????????}
  • ????????????else
  • ????????????{
  • ????????????????this.TextBlock1.Text?=?e.Error.Message;?//顯示出錯(cuò)信息?
  • ????????????}
  • ????????}
  • OK,這樣我們就可以在SILVERLIGHT中訪問SQL了,這里需要注意的一個(gè)地方是ServiceReferences.ClientConfig這個(gè)文件

  • <configuration>
  • ??<system.serviceModel>
  • ????<bindings>
  • ??????<basicHttpBinding>
  • ????????<binding?name="BasicHttpBinding_LectureDataService"?maxBufferSize="2147483647"
  • ??????????maxReceivedMessageSize="2147483647">
  • ??????????<security?mode="None"?/>
  • ????????</binding>
  • ??????</basicHttpBinding>
  • ????</bindings>
  • ????<client>
  • ??????<endpoint?address="http://www.izx.cc/WCFTeacher.svc##這里要改成你的服務(wù)器SVC地址"
  • ????????binding="basicHttpBinding"?bindingConfiguration="BasicHttpBinding_LectureDataService"
  • ????????contract="LectureDataService.LectureDataService"?name="BasicHttpBinding_LectureDataService"?/>
  • ????</client>
  • ??</system.serviceModel>
  • </configuration>
  • 如果你要上傳至服務(wù)器了,一定要改成服務(wù)器地址,要不然會(huì)出錯(cuò)的.

    posted on 2010-09-07 09:58 李明楊 閱讀(...) 評(píng)論(...) 編輯 收藏

    轉(zhuǎn)載于:https://www.cnblogs.com/lmyhao/archive/2010/09/07/1820312.html

    總結(jié)

    以上是生活随笔為你收集整理的数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。