本指南提供一個完整的 LINQ to SQL 案例,專門針對僅透過執行預存程序來存取數據。 資料庫管理員通常會使用這種方法來限制存取數據存放區的方式。
備註
您也可以在 LINQ to SQL 應用程式中使用預存程式來覆寫預設行為,特別是針對 Create、 Update和 Delete 進程。 如需詳細資訊,請參閱 自訂插入、更新和刪除作業。
針對本逐步解說的目的,您將使用已對應至 Northwind 範例資料庫中預存程式的兩種方法:CustOrdersDetail 和 CustOrderHist。 當您執行 SqlMetal 命令行工具來產生 C# 檔案時,就會發生對應。 如需更多資訊,請參閱本指南稍後的「必要條件」一節。
本逐步解說不依賴物件關係型設計工具。 使用 Visual Studio 的開發人員也可以使用 O/R 設計工具來實作預存程式功能。 請參閱 Visual Studio 中的 LINQ to SQL Tools。
備註
您的電腦可能會在下列指示中顯示某些 Visual Studio 使用者介面元素的不同名稱或位置。 您擁有的 Visual Studio 版本,以及您所使用的設定會決定這些元素。 如需詳細資訊,請參閱 個人化 IDE。
本逐步解說是使用 Visual C# 開發設定所撰寫。
先決條件
本逐步解說需要下列各項:
本逐步解說會使用專用資料夾 (“c:\linqtest7”) 來保存檔案。 開始逐步解說之前,請先建立此資料夾。
Northwind 範例資料庫。
如果您的開發電腦上沒有此資料庫,您可以從Microsoft下載網站下載。 如需指示,請參閱 下載範例資料庫。 下載資料庫之後,請將northwnd.mdf檔案複製到 c:\linqtest7 資料夾。
從 Northwind 資料庫產生的 C# 程式代碼檔案。
本逐步解說是使用 SqlMetal 工具搭配下列命令行所撰寫:
sqlmetal /code:“c:\linqtest7\northwind.cs” /language:csharp “c:\linqtest7\northwnd.mdf” /sprocs /functions /pluralize
如需詳細資訊,請參閱 SqlMetal.exe(程式代碼產生工具)。
概觀
本操作指南包含六個主要工作:
在 Visual Studio 中設定 LINQ to SQL 解決方案。
將 System.Data.Linq 元件新增至專案。
將資料庫程式代碼檔案新增至專案。
建立與資料庫的連線。
設定使用者介面。
執行及測試應用程式。
建立 LINQ to SQL 解決方案
在第一個工作中,您會建立 Visual Studio 方案,其中包含建置和執行 LINQ to SQL 專案的必要參考。
建立 LINQ to SQL 解決方案
在 [Visual Studio 檔案] 功能表上,指向 [ 新增],然後按兩下 [ 專案]。
在 [新增專案] 對話框的 [項目類型] 窗格中,按兩下 [Visual C#]。
在 [ 範本] 窗格中,按兩下 [Windows Forms 應用程式]。
在 [ 名稱] 方塊中,輸入 SprocOnlyApp。
在 [ 位置] 方塊中,確認您要儲存項目檔的位置。
按一下 [確定]。
Windows Forms 設計工具隨即開啟。
新增 LINQ to SQL 元件參考
標準 Windows Forms 應用程式範本中不包含 LINQ to SQL 元件。 您必須自行新增元件,如下列步驟所述:
若要新增 System.Data.Linq.dll
在 [方案總管] 中,以滑鼠右鍵按一下 [參考],然後按一下 [新增參考]。
在 [ 新增參考] 對話框中,按兩下 [.NET],按兩下 [System.Data.Linq] 元件,然後按兩下 [ 確定]。
元件會新增至專案。
將 Northwind 程式代碼檔案新增至專案
此步驟假設您已使用 SqlMetal 工具來從 Northwind 範例資料庫產生程式碼檔案。 如需詳細資訊,請參閱本逐步解說中較早的「先決條件」一節。
將 northwind 程式代碼檔案新增至專案
在 [專案] 功能表上,按一下 [新增現有項目]。
在 [ 新增現有專案 ] 對話框中,移至 c:\linqtest7\northwind.cs,然後按兩下 [ 新增]。
northwind.cs檔案會新增至專案。
建立資料庫連線
在此步驟中,您會定義與 Northwind 範例資料庫的連線。 本教程使用「c:\linqtest7\northwnd.mdf」作為路徑。
若要建立資料庫連線
在 [方案總管] 中,以滑鼠右鍵按兩下 [Form1.cs],然後按兩下 [ 檢視程序代碼]。
在
Form1類別中輸入下列程式代碼:Northwnd db = new Northwnd(@"c:\linqtest7\northwnd.mdf");
設定使用者介面
在這項工作中,您會設定介面,讓用戶能夠執行預存程式來存取資料庫中的數據。 在您使用本逐步解說進行開發的應用程式中,使用者只能使用內嵌在應用程式中的預存程式來存取資料庫中的數據。
設定使用者介面
返回 Windows Forms 設計工具 (Form1.cs[設計]]。
在 [檢視] 功能表上,按一下 [工具箱]。
工具箱隨即開啟。
備註
按一下 自動隱藏 圖釘,以在本節中執行其餘步驟時保持工具箱開啟。
將兩個按鈕、兩個文本框和兩個標籤從工具箱拖曳到 Form1。
將控制元件排列為隨附圖例中的 。 展開 Form1 ,讓控件易於調整。
以滑鼠右鍵按兩下 label1,然後按兩下 [ 屬性]。
將 Text 屬性從 label1 變更為 Enter OrderID:。
在 label2 的相同方式中,將 Text 屬性從 label2 變更為 Enter CustomerID:。
同樣地,將 button1 的 Text 屬性變更為 [訂單詳細數據]。
將 button2 的 Text 屬性變更為 [訂單歷程記錄]。
擴大按鈕控制件,讓所有文字都可見。
處理按鈕點選
按兩下 Form1 上的 [訂單詳細資料],以在程式代碼編輯器中開啟 button1 事件處理程式。
在程式處理器中
button1輸入下列代碼:// Declare a variable to hold the contents of // textBox1 as an argument for the stored // procedure. string param = textBox1.Text; // Declare a variable to hold the results // returned by the stored procedure. var custquery = db.CustOrdersDetail(Convert.ToInt32(param)); // Execute the stored procedure and display the results. string msg = ""; foreach (CustOrdersDetailResult custOrdersDetail in custquery) { msg = msg + custOrdersDetail.ProductName + "\n"; } if (msg == "") msg = "No results."; MessageBox.Show(msg); // Clear the variables before continuing. param = ""; textBox1.Text = "";現在按兩下 Form1 上的 button2 以開啟
button2處理程式在程式處理器中
button2輸入下列代碼:// Comments in the code for button2 are the same // as for button1. string param = textBox2.Text; var custquery = db.CustOrderHist(param); string msg = ""; foreach (CustOrderHistResult custOrdHist in custquery) { msg = msg + custOrdHist.ProductName + "\n"; } MessageBox.Show(msg); param = ""; textBox2.Text = "";
測試應用程式
現在是時候測試您的應用程式了。 請注意,您對資料庫的操作僅限於兩個預存程序可以執行的動作。 這些動作是傳回您輸入之任何 orderID 所包含的產品,或傳回針對您輸入的任何 CustomerID 所訂購之產品的歷程記錄。
若要測試應用程式
按 F5 開始偵錯。
Form1 隨即出現。
在 [ 輸入 OrderID] 方塊中,輸入
10249,然後按兩下 [訂單詳細數據]。消息框會列出 10249 訂單中包含的產品。
按兩下 [確定 ] 關閉消息框。
在 [ 輸入 CustomerID] 方塊中,輸入
ALFKI,然後按兩下 [訂單記錄]。隨即會出現消息框,其中列出客戶 ALFKI 的訂單歷程記錄。
按兩下 [確定 ] 關閉消息框。
在 [ 輸入 OrderID] 方塊中,輸入
123,然後按兩下 [訂單詳細數據]。此時會出現一個消息框,顯示「沒有結果」。
按兩下 [確定 ] 關閉消息框。
在 [ 偵錯] 功能表上,單擊 [ 停止偵錯]。
偵錯會話已結束。
如果您已完成實驗,您可以在 [檔案] 功能表上按兩下 [關閉專案],並在出現提示時儲存專案。
後續步驟
您可以藉由進行一些變更來增強此專案。 例如,您可以在清單框中列出可用的預存程式,並讓使用者選取要執行的程式。 您也可以將報表的輸出串流至文字檔。