更新:2007 年 11 月
本逐步解說會示範如何建立使用 ASP.NET Dynamic Data 的基本 Web 應用程式。Dynamic Data 可以讓您只需要增加極少部分的程式碼或是根本不需要另外增加任何程式碼,建立資料導向的網站。Dynamic Data 的一項重要功能是 Scaffolding 機制。在 Dynamic Data 網站上啟用 Scaffolding 機制時,ASP.NET 會分析您的資料模型,然後動態為每一個資料表產生網頁。這些自動產生的網頁會為每一個資料表提供顯示、插入、刪除及編輯功能。
在本逐步解說中,您將建置應用程式來顯示 AdventureWorks 範例資料庫的資料網頁。
觀賞影片 (英文) 認識這項功能。
必要條件
若要完成這個逐步解說,您必須要有:
Microsoft Visual Studio 2008 Service Pack 1 或 Visual Web Developer 2008 Express 版 Service Pack 1。
AdventureWorks 或 AdventureWorksLT 範例資料庫。如需下載並安裝 SQL Server 範例資料庫,請參閱 CodePlex 網站上的 Microsoft SQL Server 產品範例:資料庫 (英文)。請確認已配合您所執行的 SQL Server 版本 (Microsoft SQL Server 2005 或 Microsoft SQL Server 2008) 安裝版本正確的範例資料庫。
建立 Dynamic Data 網站
您可以使用網站範本立在 Visual Studio 中建立 Dynamic Data 網站。
若要建立 Dynamic Data 網頁
啟動 Visual Studio 或 Visual Web Developer。
按一下 [檔案] 功能表上的 [新網站]。或者,如果沒有這個選項,則請按一下 [新增],再按一下 [網站]。
[新網站] 對話方塊便會顯示。
在 [Visual Studio 安裝的範本],選取 [Dynamic Data 網站] (使用 LINQ to SQL) 或 [Dynamic Data 實體網站] (使用 ADO.NET Entity Framework)。
請在第一個 [位置] 方塊中,選取 [檔案系統],然後在第二個方塊中輸入要用來保存網站頁面的資料夾名稱。
例如,輸入資料夾名稱 C:\WebSites\DynamicData。
在 [語言] 清單中,按一下您想要操作的程式語言。
按一下 [確定]。
Visual Studio 會建立網站的資料夾與結構。
將資料加入至網站
下一個步驟是將資料庫加入至專案中。若要完成這個動作,請利用 Visual Studio 提供的工具,建立代表資料庫實體的類別,然後註冊資料內容供 Dynamic Data 使用。根據所選範本建立資料庫模型時,您有下列選擇:
如果您是使用 [Dynamic Data 網站] 範本建立網站,則必須使用 LINQ to SQL 建立資料庫模型。
如果您是使用 [Dynamic Data 實體網站] 範本建立網站,則必須使用 Entity Framework 建立資料庫模型。
如需選取資料模型的詳細資訊,請參閱 ASP.NET 動態資料方針。
若要將資料庫檔案加入至專案
如果網站沒有 App_Data 資枓夾,請在 [方案總管] 中以滑鼠右鍵按一下專案,然後按一下 [加入 ASP.NET 資料夾],再按一下 [App_Data]。
在 [方案總管] 中,以滑鼠右鍵按一下 [App_Data] 資料夾,然後按一下 [加入現有項目]。
[加入現有項目] 對話方塊隨即出現。
輸入安裝 AdventureWorks 資料庫檔案 (AdventureWorks_Data.mdf) 的位置。
根據預設,.mdf 檔案的安裝路徑是 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf。
注意事項:這個程序會建立專案中資料庫檔案的複本。如果不方便製作資料庫複本,您可以使用替代方法連接至資料庫,例如直接附加資料庫檔案。但是,本逐步解說不提供這個程序的說明。
下一步則是建立資料模型。這個步驟會視您要使用 LINQ to SQL 還是 ADO.NET Entity Framework 建立資料模型而稍有不同。
若要使用 LINQ to SQL 建立資料模型
如果網站沒有 App_Code 資枓夾,請以滑鼠右鍵按一下 [方案總管] 中的專案,然後按一下 [加入 ASP.NET 資料夾],再按一下 [App_Code]。
以滑鼠右鍵按一下 [App_Code] 資料夾,然後按一下 [加入新項目]。
在 [Visual Studio 安裝的範本] 下方,按一下 [LINQ to SQL 類別]。
在 [名稱] 方塊中,輸入資料庫模型的名稱。
例如,輸入名稱 AdventureWorks.dbml。
按一下 [加入]。
[物件關聯式設計工具] 隨即出現。
在 [O/R 設計工具] 中,按一下 [伺服器總管] 連結 (在 Visual Web Developer 中則是 [資料庫總管])。
在 [伺服器總管] (或 [資料庫總管]) 中,展開 [資料連接] 下的資料庫檔案節點以及其中的 [資料表] 節點。
將所有資料表都拖曳到 [O/R 設計工具] 中。
每一個資料表都會以一個實體來表示,而實體都會根據對應的資料庫資料表來命名。
儲存 AdventureWorks.dbml 檔案。
在 [方案總管] 中,開啟位於 .dbml 檔案節點下的 AdventureWorks.designer.cs 或 AdventureWorks.designer.vb 檔案。
請注意,.dbml 檔案會包含代表資料庫的 AdventureWorksDataContext 類別。其中還包含表示資料庫資料表的實體類別,如 Product 和 Employee 類別。AdventureWorksDataContext 類別的無參數建構函式會從 Web.config 檔中讀取連接字串。
開啟 Web.config 檔。
請注意,connectionStrings 項目包含對 AdventureWorks 資料庫的連接字串。
關閉類別檔案和 Web.config 檔案。
若要建立 Entity Framework 的資料模型
如果網站沒有 App_Code 資枓夾,請以滑鼠右鍵按一下 [方案總管] 中的專案,然後按一下 [加入 ASP.NET 資料夾],再按一下 [App_Code]。
以滑鼠右鍵按一下 [App_Code] 資料夾,然後按一下 [加入新項目]。
在 [Visual Studio 安裝的範本] 下方,按一下 [ADO.NET 實體資料模型]。
在 [名稱] 方塊中,輸入資料庫模型的名稱。
例如,輸入名稱 AdventureWorks.edmx。
按一下 [加入]。
接著會顯示 [Entity Data Model 精靈] 視窗。
按一下 [從資料庫產生]。
這樣會指定您要從資料庫中產生的模型。
在 [您的應用程式應該使用哪個資料連接來連接資料庫?] 下方,選取清單中的 AdventureWorks_Data.mdf。
請確定已選取 [將 Web.Config 中的實體連接設定儲存為] 核取方塊。您可以保留預設的連接字串名稱。
按 [下一步]。
精靈會顯示一個頁面,您可以在此指定要將哪些資料庫物件加入到模型。
選取 [資料表] 節點,然後選取資料庫中的所有資料表。您可以保留預設的模型命名空間。
按一下 [完成]。
隨即會顯示 [ADO.NET 實體資料模型設計工具]。關閉設計工具。
在 [方案總管] 中,開啟位於 .edmx 檔案節點下的 AdventureWorks.designer.cs 或 AdventureWorks.designer.vb 檔案。
請注意,.edmx 檔案會包含代表資料庫的 AdventureWorksDataContext 類別。其中還包含表示資料庫資料表的實體類別,如 Product 和 Employee 類別。
開啟 Web.config 檔。
請注意,connectionStrings 項目包含對 AdventureWorks 資料庫的連接字串。
關閉類別檔案和 Web.config 檔案。
下一步則是註冊資料模型供動態資料使用。
若要註冊資料內容
開啟 Global.asax 檔案。
如果使用的是 LINQ to SQL,請在 RegisterRoutes 方法中,加入下列程式碼:
model.RegisterContext(GetType(AdventureWorksDataContext), _ New ContextConfiguration() With {.ScaffoldAllTables = True})model.RegisterContext(typeof(AdventureWorksDataContext), new ContextConfiguration() { ScaffoldAllTables = true });這麼做可以註冊 LINQ to SQL 資料內容供動態資料使用,並且啟用資料模型的自動 Scaffolding。
警告:因為您已經在資料模型中公開所有資料表,以便進行顯示與編輯作業,所以啟用 Scaffolding 可能會引發安全性風險。如需詳細資訊,請參閱 ASP.NET 動態資料 Scaffolding 和頁面範本概觀。
如果使用的是 Entity Framework,請在 RegisterRoutes 方法中,加入下列程式碼:
model.RegisterContext(GetType(AdventureWorksLT_DataModel.AdventureWorksLT_DataEntities), _ New ContextConfiguration() With {.ScaffoldAllTables = True})model.RegisterContext(typeof(AdventureWorksLT_DataModel.AdventureWorksLT_DataEntities), new ContextConfiguration() { ScaffoldAllTables = true });這麼做可以註冊 Entity Framework 資料內容供動態資料使用,並且啟用資料模型的自動 Scaffolding。
警告:因為您已經在資料模型中公開所有資料表,以便進行顯示與編輯作業,所以啟用 Scaffolding 可能會引發安全性風險。如需詳細資訊,請參閱 ASP.NET 動態資料 Scaffolding 和頁面範本概觀。
儲存並關閉 Global.asax 檔案。
測試 Dynamic Data 網站
您現在可以測試剛剛建立完成的 Dynamic Data 網站。
若要測試網站
在 [方案總管] 中,以滑鼠右鍵按一下 Default.aspx 網頁,再按一下 [在瀏覽器中檢視]。
網頁會顯示一個清單,列出您先前加入到資料模型的資料表。
按一下其中一個資料表。例如,按一下 [Products] 資料表。
網頁會顯示一個清單,包含您先前所選資料表中的資料。請注意,如果資料表中包含外部索引鍵欄位,則會提供一個可以前往參考資料表詳細資料頁面的連結。如果該資料表是一對多關聯性中的父資料表,則會提供一個可以前往子資料表的清單頁面。
按一下 [刪除] 按鈕,從資料表中刪除資料錄。
按一下頁碼即可巡覽資料錄。
按一下 [編輯] 按鈕,修改資料表中的資料錄。
變更值,然後按一下 [更新],或按一下 [取消] 取消編輯作業。
在頁面下方,按一下 [插入新項目] 按鈕,建立新資料錄。
網頁會顯示包含資料輸入欄位的清單。
提供新資料錄的相關資訊,然後按一下 [插入],或按一下 [取消],取消插入作業。
完成後,請關閉瀏覽器。
後續步驟
此逐步解說會示範如何不撰寫任何程式碼的情況下,建立基本的 Dynamic Data 網站。您可以利用這個機會,開始探索 Dynamic Data 功能,同時擴充 Dynamic Data 的預設行為。
如需建立擴充內建資料驗證或自訂預設網頁呈現方式的詳細資訊,請參閱 ASP.NET 動態資料模型概觀。
如需在現有控制項中新增動態行為的詳細資訊,請參閱將動態行為加入至 ASP.NET 資料繫結控制項。
如需變更預設 Scaffolding 行為的詳細資訊,請參閱 ASP.NET 動態資料 Scaffolding 和頁面範本概觀。