建立 Northwind 資料服務 (WCF Data Services 快速入門)
在此工作中,您將建立本機版本的 Northwind 範例資料服務,這個服務會使用 WCF Data Services 公開以 Northwind 範例資料庫為基礎的 Open Data Protocol (OData) 摘要。這個版本將會支援使用 OData 更新 Northwind 資料庫中的資料。 這個工作包含下列基本步驟:
建立 ASP.NET Web 應用程式。
使用 實體資料模型 工具來定義資料模型。
將資料服務加入至 Web 應用程式。
啟用資料服務的存取。
注意
當您完成這項工作時所建立的 ASP.NET Web 應用程式會在 Visual Studio 提供的 ASP.NET 程式開發伺服器上執行。ASP.NET 程式開發伺服器只支援從本機電腦存取。若要一併在開發期間更輕鬆地測試資料服務並進行疑難排解,請考慮使用 Internet Information Services (IIS) 執行可裝載資料服務的應用程式。如需詳細資訊,請參閱 HOW TO:開發在 IIS 上執行的 WCF Data Service。
若要建立 ASP.NET Web 應用程式
在 Visual Studio 的 [檔案] 功能表上,選取 [新增],然後選取 [專案]。
在 [新增專案] 對話方塊的 [Visual Basic] 或 [Visual C#] 下方,選取 [Web] 範本,然後選取 [ASP.NET Web 應用程式]。
注意
如果您使用 Visual Studio Web Developer,就必須建立新網站,而非建立新的 Web 應用程式。
輸入 NorthwindService 做為專案的名稱。
按一下 [確定]。
(選擇性) 指定 Web 應用程式的特定連接埠號碼。 注意:快速入門的其餘部分會使用通訊埠編號 12345。
在 [方案總管] 中,以滑鼠右鍵按一下您剛建立的 ASP.NET 專案名稱,然後按一下 [屬性]。
選取 [Web] 索引標籤,並將 [指定通訊埠] 文字方塊的值設定為 12345。
若要定義資料模型
在 [方案總管] 中,以滑鼠右鍵按一下 ASP.NET 專案名稱,然後按一下 [加入新項目]。
在 [加入新項目] 對話方塊中,按一下 [資料] 範本,然後選取 [ADO.NET 實體資料模型]。
針對資料模型的名稱,輸入 Northwind.edmx。
在 實體資料模型 精靈中,選取 [從資料庫產生],然後按 [下一步]。
進行下列其中一項步驟,將資料模型連接至資料庫,然後按一下 [下一步]:
如果尚未設定資料庫連接,請按一下 [新增連接],然後建立新的連接。 如需詳細資訊,請參閱 HOW TO:建立連接至 SQL Server 資料庫。 此 SQL Server 執行個體必須已附加 Northwind 範例資料庫。
-或-
如果您擁有已經設定為連接至 Northwind 資料庫的資料庫連接,請從連接清單中選取該連接。
在精靈的最後一頁上,選取資料庫中所有資料表的核取方塊,並且清除檢視表和預存程序的核取方塊。
按一下 [完成] 關閉精靈。
注意
這樣產生的資料模型會在實體類型上公開外部索引鍵屬性。使用 Visual Studio 2008 建立的資料模型不包含這些外部索引鍵屬性。因此,您必須更新之前為了存取 Northwind 資料服務所建立之任何用戶端應用程式的用戶端資料服務類別,此資料服務是在嘗試存取這一版的 Northwind 資料服務之前使用 Visual Studio 2008 所建立。
若要建立資料服務
在 [方案總管] 中,以滑鼠右鍵按一下 ASP.NET 專案名稱,然後按一下 [加入新項目]。
選取 [加入新項目] 對話方塊中的 [WCF Data Service]。
針對服務名稱,輸入 Northwind。
Visual StudioVisual Studio 會針對新的服務建立 XML 標記和程式碼檔案。 根據預設,程式碼編輯器視窗隨即開啟。 在 [方案總管] 中,這個服務將會具有名稱 Northwind,副檔名為 .svc.cs 或 .svc.vb。
在資料服務的程式碼裡,於定義資料服務和型別的類別定義中,取代註解 /* TODO: put your data source class name here */,該型別是資料模型的實體容器,在這個案例中是 NorthwindEntities。 類別定義應該看起來如下所示:
Public Class Northwind Inherits DataService(Of NorthwindEntities)
public class Northwind : DataService<NorthwindEntities>
若要啟用資料服務資源的存取
在資料服務的程式碼中,以下列程式碼取代 InitializeService 函數中的預留位置程式碼:
' Grant only the rights needed to support the client application. config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead _ Or EntitySetRights.WriteMerge _ Or EntitySetRights.WriteReplace) config.SetEntitySetAccessRule("Order_Details", EntitySetRights.AllRead _ Or EntitySetRights.AllWrite) config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead)
// Grant only the rights needed to support the client application. config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead | EntitySetRights.WriteMerge | EntitySetRights.WriteReplace); config.SetEntitySetAccessRule("Order_Details", EntitySetRights.AllRead | EntitySetRights.AllWrite); config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead);
如此可讓授權的用戶端具有指定之實體集資源的讀取和寫入存取權。
注意
任何可存取 ASP.NET 應用程式的用戶端也可以存取資料服務公開的資源。在產生資料服務的過程中,若要避免未經授權存取資源,您也應該要保護應用程式本身。如需詳細資訊,請參閱保護 WCF Data Services 的安全。
後續步驟
您已成功建立根據 Northwind 範例資料庫的本機、可寫入版本的 OData 服務。 您也已經啟用具有 ASP.NET Web 應用程式權限之用戶端摘要的存取。 接下來,您將會建立第二個用戶端應用程式將此 Northwind 資料繫結至 Windows 控制項,並傳送更新給這個新的可寫入 OData 服務: