更新:2007 年 11 月
ASP.NET 動態資料可讓您選取符合需求的自訂層級。本章節內容包括可協助您執行工作的方針和建議。
「動態資料」可讓您迅速建立具有完整動態功能的完整 Web 應用程式,也能讓您輕鬆將資料庫整合至網站,以及選取您需要的特定動態功能。
ASP.NET 動態資料提供豐富的自訂範圍,讓您可以從展示層到資料層改寫網站以符合所需。
使用 Scaffolding 建立網站
如果您需要快速建立由資料驅動的網站,使用 ASP.NET 動態資料可讓您輕鬆建立具有完整動態功能的完整 Web 應用程式。動態資料支援 Web Scaffolding (這可讓您根據資料模型,以最少量程式碼執行應用程式),因此能協助您達成目標。雖然此 Web Scaffolding 具有標準 UI,但它能讓您在您的資料表上執行建立、讀取、更新和刪除 (CRUD) 作業。它也完整支援關聯性 (Relationship)。您可以使用 Scaffolding 先建立基本應用程式,稍後再套用適當的自訂項目。如需詳細資訊,請參閱逐步解說:建立使用 Scaffolding 的新動態資料網站。
如需詳細資訊,請參閱 ASP.NET 動態資料概觀。
將動態資料加入至現有網站
ASP.NET 動態資料可讓您選取需要的特定動態功能,因而得以輕鬆地將動態資料控制項行為整合至現有網站。若要這麼做,您必須執行下列步驟:
建立動態資料網站。如需詳細資訊,請參閱逐步解說:建立使用 Scaffolding 的新動態資料網站。
建立欄位範本。如需詳細資訊,請參閱 ASP.NET 動態資料欄位範本概觀。
自訂資料模型。如需詳細資訊,請參閱 ASP.NET 動態資料模型概觀。
建立顯示資料表的自訂頁面。如需詳細資訊,請參閱 ASP.NET 動態資料 Scaffolding 和頁面範本概觀。
使用具有動態行為的資料控制項。如需詳細資訊,請參閱 ASP.NET 動態資料 Scaffolding 和頁面範本概觀。
如需詳細資訊,請參閱逐步解說:將動態資料加入至現有網站。
使用驗證屬性
您可以使用 System.ComponentModel.DataAnnotations 屬性,將中繼資料 (Metadata) 套用至資料模型中的資料欄位,以提供其他資訊給「動態資料」。例如,動態資料會使用這項資訊,自訂 UI 在資料欄位顯示和編輯方面的呈現方式。
使用驗證屬性
當您套用驗證屬性 (Attribute) 時,必須遵守下列使用限制:
屬性 (Attribute) 可以套用至屬性 (Property) 或欄位。
屬性 (Attribute) 只能套用一次。
套用驗證屬性
將任何 System.ComponentModel.DataAnnotations 屬性套用至資料欄位時,必須遵循下列步驟。
在 Web 應用程式的 App_Code 資料夾中,實作包含資料內容部分類別 (Class) 的類別檔案。這個類別代表包含了要套用屬性之資料欄位的資料表。
建立另一個類別,做為關聯的中繼資料類別。您可以為此類別使用任意名稱,但類別名稱必須符合您在套用至部分類別的 MetadataTypeAttribute 屬性中所參考的名稱,如下面段落所說明。將這個類別放在與剛才建立之類別所在的相同類別檔案中。
在關聯的中繼資料類別中建立公用屬性或欄位,其名稱與必須套用驗證屬性之資料欄位的名稱相同。
將 MetadataTypeAttribute 屬性套用到部分類別定義。此屬性的參數就是關聯中繼資料類別的名稱。
產生驗證錯誤
System.ComponentModel.DataAnnotations 屬性可讓您建立自訂錯誤,當驗證失敗時則可使用內建錯誤。基於這個理由,驗證屬性可以採用下列任一具名錯誤參數:
ErrorMessage. 此參數可指定與驗證控制項關聯的錯誤訊息。您可以使用此參數,指定不可當地語系化的自訂錯誤訊息,也許還能覆寫預設的可當地語系化訊息。
ErrorMessageResourceName. 此參數可指定與驗證控制項關聯的錯誤訊息資源。您可以使用此參數,指定包含可當地語系化之錯誤訊息的資源檔。
ErrorMessageResourceType. 此參數可指定與驗證控制項關聯的錯誤訊息類型。您可以使用此參數識別錯誤訊息,如資源檔中所定義。這個資源檔是使用前述參數指定。
使用驗證屬性錯誤訊息時,下列是可能的選項:
您可以使用一律已當地語系化的預設錯誤訊息。在這種狀況下,您不必指定上述任一參數。
您可以使用 ErrorMessage 參數提供不可當地語系化的自訂錯誤訊息,以覆寫預設訊息。
您可以使用 ErrorMessageResourceName 參數,提供可當地語系化的資源錯誤訊息檔案。接著您可以使用 ErrorMessageResourceType 參數,指定資源檔中包含的錯誤訊息。
選取資料模型
LINQ to SQL 和 Entity Framework 有諸多相似之處,但各有針對不同案例而設計的功能。LINQ to SQL 是以根據現有 Microsoft SQL Server 結構描述而迅速開發的應用程式為目標。Entity Framework 則透過鬆散耦合、彈性對應至現有關聯式結構描述,提供對 Microsoft SQL Server 和協力廠商資料庫的物件和儲存層存取。
LINQ to SQL
LINQ to SQL 的功能是以 Microsoft SQL Server 資料庫為設計目標。您可以擁有現有資料庫結構描述的強型別檢視。
LINQ to SQL 支援將現有資料庫結構描述直接、一對一對應至 .NET Framework 類別。單一資料表可以對應至單一類別,而外部索引鍵可以公開 (Expose) 為強型別關聯性。
您可以針對資料表/檢視/資料表值函式建置 LINQ 查詢,並將結果當做強型別物件傳回,以及透過強型別方法呼叫會傳回強型別結果的預存程序 (Stored Procedure)。其中一項重要的 LINQ to SQL 設計原則是,LINQ to SQL 適用於最常見的狀況。因此,舉例來說,如果您透過某個客戶的 Orders 屬性存取訂單集合,而該客戶的訂單之前並未擷取過,則 LINQ to SQL 會自動幫您取得這些訂單。
ADO.NET Entity Framework
ADO.NET Entity Framework 的功能則是針對企業案例。企業的資料庫通常都由資料庫管理員控管。將結構描述最佳化時通常都是考量儲存目的 (效能、一致性、資料分割),而非公開良好的應用程式模型,而隨著使用資料和使用模式不斷演變,結構描述也會隨時間改變。
Entity Framework 的設計用途是公開應用程式導向的鬆散耦合資料模型,可能會與您現有的資料庫結構描述大不相同。
例如,您可以將單一類別 (或實體) 對應至多個資料表/檢視,或將多個類別對應至同一個資料表/檢視。您可以將繼承階層架構 (Inheritance Hierarchy) 對應至單一資料表/檢視 (如同 LINQ to SQL 中的用法),或對應至多個資料表/檢視。這種彈性對應是以宣告方式指定,這樣一來,當資料庫的結構描述隨時間演變時也能使用,不需重新編譯應用程式。
Entity Framework 包含 LINQ to Entities,可對概念應用程式資料模型公開許多與 LINQ to SQL 相同的功能。
如需詳細資訊,請參閱對關聯式資料引入 LINQ (英文)。
請參閱
工作
概念
ASP.NET 動態資料 Scaffolding 和頁面範本概觀