日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/4/5 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據庫LINQ TO SQL在Silverlight中的應用(WCF)------學習筆記(一)

步驟:

1. 創建SILVERLIGHT應用程序

2. 創建LINQ TO SQL [注意序列化的問題]

3. 創建WCF

4. 在SILVERLIGHT中應用WCF

1. 創建SILVERLIGHT應用程序

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

記得一定要選擇上面那個, 因為之后要加C#項目中添加WCF

點“確定”后,我們會看到在我們新建的解決方案中有2個項目. 之后要做的就是在圖片中已選的項目內添加LINQ TO SQL和WCF。

2. 創建LINQ TO SQL [注意序列化的問題]

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

OK,添加一個LINQ TO SQL。

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

?

3.創建WCF服務

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

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

添加好WCF服務后,我們就可以開始在開始寫代碼了, 進入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語言,在這里我們不詳細介紹它了.下面的意思是通過teacherID找到指定的TEACHER表中的所有列
  • ????????????var?teacher?=?from?p?in?db.Teacher?where?p.TeacherID?==?teacherID?select?p;
  • ????????????//返回List<Teacher>
  • ????????????return?teacher.ToList<Teacher>();
  • ????????}
  • ????????//?如果要添加更多操作,請使用?[OperationContract]?標記它們
  • ????}
  • }
  • 如果您使用的是"啟用Silverlight功能的WCF服務", 并沒有實現接口,所以我們沒有看到IWCFTeacher.cs, 而是直接在WCFTeacher.svc.cs文件中編寫上面的代碼. 上面的代碼中只實現了1個功能,就是從TEACHER表中返回指定TEACHERID的所有列。如果您要添加其他方法,需要在每個方法前加入[OperationContract].

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

    還要需要解釋的是這里我們用到了返回值List<Teacher>, Teacher是我們的自定義的類,所以前面的LINQ TO SQL的屬性里我們一定要改序列化模式,要不然在SILVERLIGHT遠程調試時WCF服務會出錯

    4. 在SILVERLIGHT中應用WCF

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

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

    你也可以點“發現”,VS將自動找到解決方案里的WCF服務。

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

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

    但是因為我們WCF代碼中使用到了LIST,所以我們需要在SERVICE REFERENCE目錄下的你剛剛創建的WCF服務引用中點右鍵,配置服務引用。將集合類列改成"System.Collections.Generic.List"

    如果你修改了C#項目中WCF服務,需要生成解決方案,然后SERVICE REFERENCE目錄下點右鍵,更新服務引用

    在SILVERLIGHT中應用我們在WCF中寫的方法,具體代碼如下:

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

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

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

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

  • <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##這里要改成你的服務器SVC地址"
  • ????????binding="basicHttpBinding"?bindingConfiguration="BasicHttpBinding_LectureDataService"
  • ????????contract="LectureDataService.LectureDataService"?name="BasicHttpBinding_LectureDataService"?/>
  • ????</client>
  • ??</system.serviceModel>
  • </configuration>
  • 如果你要上傳至服務器了,一定要改成服務器地址,要不然會出錯的.

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

    轉載于:https://www.cnblogs.com/lmyhao/archive/2010/09/07/1820312.html

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。