逐步解說:在 ASP.NET 中建立資料存取和商業邏輯層

更新:2007 年 11 月

使用 ASP.NET 中的資料時,可以透過常用的軟體模式來獲得一些好處。其中一項模式就是將資料存取程式碼從負責掌管資料存取或提供其他商務規則 (Business Rule) 的商務邏輯程式碼中分離出來。在此模式中,兩種層級皆與展示層不同,後者包含網站使用者可存取以檢視或變更資料的網頁。

ASP.NET 可以透過好幾種方式,區別資料存取、商務邏輯與展示。例如,資料來源模型 (包含 LinqDataSourceObjectDataSource 控制項之類的伺服器控制項) 會將展示層從資料存取程式碼和商務邏輯中分離出來。

另一種模式則是直接將資料存取邏輯包含在 ASP.NET 網頁 (展示層) 中。例如,您可以在 ASP.NET 網頁的程式碼後置網頁中撰寫 ADO.NET 程式碼,或是使用 SqlDataSource 控制項。此方法會將資料存取邏輯與展示層緊密地組合在一起。

建議的作法則是將資料存取邏輯從展示層中分離出來。這個分離出來的層級稱為資料存取層。資料存取層可以實作為不同的類別庫專案。但是,您也可以使用 Visual Web Developer 中的工具,為自己產生資料存取層。

注意事項:

您無法在 Microsoft Visual Web Developer Express 版中建立程式庫專案。但是,您可以使用 Visual Basic Express 版或 Visual C# Express 版來建立不同的專案,然後將該類別的輸出當成組件 (DLL) 包含在網站中。

如果您的網站可以顯示或更新資料,則您應該先建立資料存取層或商務邏輯層,再建立使用者介面。

資料驅動的 Web 應用程式通常藉由型別資料集或代表資料的實體類別來包含資料存取層,並同時包含可強制執行自訂商務規則的商務邏輯層。最後,它藉由 ASP.NET 網頁來包含展示層,並透過主版頁面與佈景主題來建立通用的頁面配置。本逐步解說將示範如何建立資料存取層。

資料存取層包含基礎資料來源專屬的所有程式碼,其中包括可建立資料庫連接的程式碼,以及可發行 Select、Insert、Update 和 Delete 命令的程式碼。資料存取層通常包含可實作方法的類別,以存取基礎資料庫資料。展示層不會直接使用資料。反之,它會針對所有資料要求,叫用資料存取層中的類別與方法。

本逐步解說所述的工作包括下列各項:

  • 建立 SQL 資料庫並加入資料。

  • 加入 [Linq to SQL] 檔案以做為資料存取層。

  • 建立可做為展示層使用的網頁。

  • LinqDataSource 控制項加入至可在展示層與資料存取層之間進行通訊的網頁中。

必要條件

若要完成此逐步解說,您需要下列項目:

  • Microsoft Visual Studio 2008 或 Microsoft Visual Web Developer Express 版。如需下載資訊,請參閱 Visual Studio 開發人員中心 網站 (英文)。

  • .NET Framework 3.5 版。

  • SQL Server Express Edition。如果您已經安裝 Microsoft SQL Server,可以改用此程式。

建立網站

首先建立網站。

若要建立新的檔案系統網站

  1. 開啟 Visual Studio 2008 或 Visual Web Developer Express 版。

  2. 按一下 [檔案] 功能表中的 [新網站]。

    [新網站] 對話方塊便會顯示。

  3. 請在 [Visual Studio 安裝的範本] 下方,選取 [ASP.NET 網站]。

  4. 按一下 [位置] 方塊中的 [檔案系統],然後輸入要存放網站檔案的資料夾名稱。

    例如,輸入 C:\BasicWebSite。

  5. 按一下 [語言] 清單中的 [Visual Basic] 或 [Visual C#],然後按一下 [確定]。

    注意事項:

    您所選擇的程式語言將會成為網站的預設語言,不過您也可以為每個頁面分別設定程式語言。

    Visual Web Developer 會建立資料夾和名為 Default.aspx 的新網頁。

連接到資料庫

下一步就是使用 [伺服器總管] 視窗來連接至 Visual Web Developer 中的資料庫 (在 Visual Web Developer Express 版中,視窗名為 [資料庫總管])。在 [伺服器總管] 中建立資料庫的連接可讓您將資料表、預存程序、檢視,以及其他資料庫項目,通通加入 Visual Studio。您也可以手動或使用 [查詢產生器] 視窗,來檢視資料表資料或建立查詢。

在您針對本逐步解說稍後說明的資料存取層建置型別資料集時,必須在 Visual Web Developer 中建立對資料庫的連接。您可以手動提供連接資訊。但是,Visual Web Developer 可以簡化此處理序,因為它會自動填入已經在 [伺服器總管] 中註冊的資料庫清單。

在此逐步解說中,您將建立新的資料庫以追蹤工作項目。

建立新的 SQL Server Express 資料庫

在本節中,您將建立新的 SQL Server Express 資料庫,以便儲存待辦項目清單的工作資訊。

若要將資料庫加入至網站

  1. 以滑鼠右鍵按一下 [方案總管] 中的網站名稱,然後按一下 [加入新項目]。

    [加入新項目] 視窗隨即顯示。

  2. 選取 [SQL 資料庫] 並將資料庫命名為 Tasks.mdf。

  3. 按一下 [確定]。

  4. 當 Visual Web Developer 詢問您是否要將資料庫儲存到 App_Data 資料夾,按一下 [是]。

為 Tasks 資料庫建立結構描述和範例資料

您可以使用資料庫設計和編輯功能,為負責儲存工作項目的資料表建立結構描述。

若要為 Tasks 資料庫定義結構描述並加入資料

  1. 開啟 [方案總管] 中的 [App_Data] 資料夾,並按兩下 Tasks.mdf。

    [伺服器總管] 中的 Tasks 資料庫節點隨即開啟。

  2. 以滑鼠右鍵按一下 [資料表] 資料夾,然後按一下 [加入新的資料表]。

    資料表定義視窗隨即顯示。

  3. 在資料表中建立下列資料行:

    資料行名稱

    資料型別

    屬性

    taskId

    int

    Not null

    name

    nvarchar(50)

    Not null

    dateCreated

    datetime

    Not null

    isComplete

    bit

    Not null

  4. 選取 taskId 資料行的資料列,然後以滑鼠右鍵按一下該資料列,再按一下 [設定主索引鍵]。

  5. 選取 taskid 資料列,然後在 [資料行屬性] 視窗中找到 [識別規格] 區段。

  6. 開啟該區段並將 [(為識別)] 設定為 [是]。

  7. 儲存資料表,將其命名為 TasksList,然後關閉資料表定義視窗。

  8. 以滑鼠右鍵按一下 [伺服器總管] 中的資料表,然後按一下 [顯示資料表資料]。

    編輯視窗隨即出現,方便您檢視、加入與編輯資料。

  9. 將四或五筆資料加入至資料表。

    您不需要指定 taskId 資料行的值,因為它是識別資料行,會自動為自己指派值。

  10. 關閉編輯視窗。

建立資料存取和商業邏輯層

您可以透過數種方式,針對剛建立的資料庫建立資料存取與商務邏輯層。在此逐步解說中,您會建立一個代表資料庫實體的類別,並將自己的商務邏輯加入至這些產生的類別中 (您將無法在此逐步解說中將商務邏輯加入至這些類別)。

在此逐步解說中,您將透過 Language Integrated Query (LINQ) 來使用資料。LINQ 會將物件導向程式設計的原則套用至關聯式資料。它提供統一的程式撰寫模型 (Programming Model),來查詢及更新來自不同資料來源類型的資料,並將資料功能直接延伸到 C# 及 Visual Basic 語言。如需有關 LINQ 的詳細資訊,請參閱Language-Integrated Query (LINQ)

您將使用 LINQ to SQL 類別做為資料存取層。您將使用 Visual Web Developer 中的 [物件關聯式設計工具] 視窗來產生代表資料的實體類別。

將 Tasks 資料庫對應至 SQL 資料內容類別

若要開始建立資料存取層,請將型別資料集加入至專案。

若要建立 Tasks 資料表的類別

  1. 如果網站沒有 App_Code 資枓夾,請以滑鼠右鍵按一下 [方案總管] 中的專案,然後按一下 [加入 ASP.NET 資料夾],再按一下 [App_Code]。

  2. 以滑鼠右鍵按一下 [App_Code] 資料夾,然後按一下 [加入新項目]。

    接著會顯示 [加入新項目] 對話方塊。

  3. 選取 [Visual Studio 安裝的範本] 底下的 [LINQ to SQL 類別] 範本,並將檔案命名為 Tasks.dbml。

  4. 按一下 [加入]。

    [物件關聯式設計工具] 視窗隨即出現。

  5. 在 [伺服器總管] 中,將 TasksList 資料表拖曳至 [物件關聯式設計工具] 視窗。

  6. 儲存 Tasks.dbml 檔案。

    Visual Web Developer 會將 Tasks.dbml.layout 檔案建立在 Tasks.dbml 底下的 [App_Code] 資料夾中。同時,它會依照您使用的程式設計語言,建立 Tasks.designer.cs 或 Tasks.designer.vb。

  7. 開啟 [方案總管] 中的 Tasks.designer.cs 或 Tasks.designer.vb 檔案。

    請注意,程式碼包含名為 TasksDataContext 和 TasksList 的類別。TasksDataContext 類別代表資料庫,而 TasksList 類別則代表資料庫資料表。TasksDataContext 類別的無參數建構函式 (Constructor) 會從網站的組態檔 (Web.config) 中讀取資料庫的連接字串。

  8. 開啟 Web.config 檔。

    請注意,Tasks 資料庫的連接字串已加入 connectionStrings 項目中。

  9. 關閉類別檔案和 Web.config 檔案。

建立和設定 LinqDataSource 控制項

現在您已有資料庫資料表和代表資料庫實體的類別,可以在 ASP.NET Web 網頁使用 LinqDataSource 來存取資料庫。LinqDataSource 控制項透過 ASP.NET 資料來源控制項架構,將 LINQ 提供給 Web 程式開發人員使用。

LinqDataSource 控制項可以建立用以選取、插入、更新和刪除資料庫中物件的程式碼。您可以使用商務邏輯來呼叫這些類別,以執行資料庫功能並套用商務邏輯規則。

建立和設定 LinqDataSource 控制項

  1. 開啟或切換至 Default.aspx 頁面。

  2. 切換至 [設計] 檢視。

  3. 從 [工具箱] 的 [資料] 索引標籤,將 LinqDataSource 控制項拖曳到 Web 網頁上。

    您可以將 ID 屬性保留為 LinqDataSource1。

  4. 按一下 [LinqDataSource 工作] 智慧標籤面板中的 [設定資料來源]。

  5. 在內容物件清單中,選取 [TasksDataContext],然後按 [下一步]。

  6. 在清單中,選取 [TasksLists(Table<TasksList>)],然後按一下 [完成]。

  7. 在 [LinqDataSource 工作] 智慧標籤面板中,依序選取 [啟用 Delete]、[啟用 Insert] 和 [啟用 Update] 核取方塊。

    請注意,您不需要指定任何選取資料的資料庫命令。

  8. 執行網頁。

    網頁會顯示您先前於逐步解說中輸入的資料。

後續步驟

本逐步解說已說明如何藉由使用 [LINQ to SQL 類別] 範本和 LinqDataSource 伺服器控制項來建立應用程式的資料存取和商務邏輯層。您已經建立一種方式,供網頁存取具彈性且未直接與網站展示層連結的資料。

逐步解說:建立具備 AJAX 功能的資料應用程式主題將透過 LinqDataSource 控制項來建立具備 AJAX 能力的 Web 應用程式,以顯示並更新 Tasks 資料庫中的資訊。

請參閱

工作

逐步解說:建立具備 AJAX 功能的資料應用程式

概念

ASP.NET 逐步解說精選