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)呼叫基本和呼叫一般的查詢方法一樣,這裡不再重複!
(四)資料庫中自定義函式是不能被匯入的!雙擊會彈出對話方塊!所以要使用自定義函式,最好用儲存過程先封裝!