1. 程式人生 > >Wcf Ria Services學習筆記(三):WCF RIA Service中呼叫儲存過程

Wcf Ria Services學習筆記(三):WCF RIA Service中呼叫儲存過程

            專案中碰到要呼叫儲存過程的情況!但Wcf Ria Service呼叫儲存過程似乎有點麻煩!將碰到的問題簡單做個記錄。

分別以幾個特別的儲存過程為例說明下,Wcf Ria Service中怎麼樣呼叫儲存過程。

(一)帶輸入引數和輸出引數的儲存過程。

           在Wcf Ria Services學習筆記(一)中有個儲存過程名為totalcredit的儲存過程 [dbo].[totalcredit](@name varchar(40),@total int output) ,如何在Wcf Ria Service中呼叫此儲存過程呢? 

           (1)匯入儲存過程

            我們在上前章節可以看到,只有表,檢視才新增到了Model1.edmx中,而儲存過程和自定義函式是沒有新增到*.edmx。這個需要我們手動新增的, 我們需要使用 ADO.NET 實體資料模型設計器(實體設計器)來匯入儲存過程!

           首先:“模型瀏覽器”中,開啟“儲存過程”資料夾(在儲存模型資訊中),然後雙擊沒有對應函式匯入的儲存過程。如圖:

                              

           其次:填入新函式匯入的設定,在彈出的對話方塊中,指定下列四種基本返回型別之一:“無”“標量”、“複雜”“實體”,然後從可用下拉列表中選擇特定返回型別。這裡指定為"無"。併為儲存過程領取一個名字。如圖:   點確定後,會在Model.edmx中自動新增如下程式碼。

      

       

       (2)在伺服器端的 DomainService1.cs  中新增如下程式碼! 一定要加Invoke,表示是呼叫的服務,而且輸出引數要自己用 ObjectParamete定義!

        (3)在MainPage.xaml檔案中呼叫該服務.因為Invoke操作時立即執行的,所以不需要submitchange()操作

             

   以上就完成了帶輸入輸出引數儲存過程的呼叫!

(二)執行一個命令或事務(如delete操作)

操作過程也和上面差不多,比如我們想做一個刪除操作新建了一個儲存過程!

我們在匯入儲存過程時,設定返回型別為“無”,並命名為DelStudentByMaxStudentID,在DomainService1中這樣寫的

在MainPage.xaml中和前面的差不多,只是返回值,是刪除資料庫記錄的條數!

(三)執行返回多個欄位的儲存過程

(1)這個比較麻煩些,在設定返回型別是為 “複雜”,例如第一章節的儲存過程sp_SelectAllStudent

(2)需要在DomainService1.metadata.cs新增自定義的複雜型別,如下面的程式碼

(3)在DomainService1.cs中程式碼如下

(4)呼叫基本和呼叫一般的查詢方法一樣,這裡不再重複!

(四)資料庫中自定義函式是不能被匯入的!雙擊會彈出對話方塊!所以要使用自定義函式,最好用儲存過程先封裝!