Pluralsight Data Layer Validation with Entity Framework 4.1 視頻教學 英文正式版     軟體簡介:  ADO.NETEntityFramework是微軟以ADO.NET為基礎所發展出來的物件關聯對 應(O/RMapping)解決方案,早期被稱為ObjectSpace,現已經包含在Visual Studio2008ServicePack1以及.NETFramework3.5ServicePack1中發表。 ADO.NETEntityFramework以EntityDataModel(EDM)為主,將資料邏輯層切 分為三塊,分別為ConceptualSchema,MappingSchema與StorageSchema三層, 其上還有EntityClient,ObjectContext以及LINQ可以使用。 背景 長久以來,程式設計師和資料庫總是保持著一種微妙的關係,在商用應用程式中, 資料庫一定是不可或缺的元件,這讓程式設計師一定要為了連接與存取資料庫而去學習 SQL指令,因此在資訊業中有很多人都在研究如何將程式設計模型和資料庫整合在一起, 物件關聯對應(Object-RelationalMapping)的技術就是由此而生,像Hibernate或 NHibernate都是這個技術下的產物,而微軟雖然有了ADO.NET這個資料存取的利器,但卻 沒有像NHibernate這樣的物件對應工具,因此微軟在.NETFramework2.0發展時期,就提 出了一個ObjectSpace的概念,ObjectSpace可以讓應用程式可以用完全物件化的方法連接 與存取資料庫,其技術概念與NHibernate相當類似,然而ObjectSpace工程相當大,在.NET Framework2.0完成時仍無法全部完成,因此微軟將ObjectSpace納入下一版本的.NET Framework中,並且再加上一個設計的工具(Designer),構成了現在的ADO.NETEntity Framework。 EntityFramework利用了抽象化資料結構的方式,將每個資料庫物件都轉換成應用程式物 件(entity),而資料欄位元都轉換為屬性(property),關聯則轉換為結合屬性(association), 讓資料庫的E/R模型完全的轉成物件模型,如此讓程式設計師能用最熟悉的程式語言來呼叫 存取。而在抽象化的結構之下,則是高度整合與對應結構的概念層、對應層和儲存層,以及支 援EntityFramework的資料提供者(provider),讓資料存取的工作得以順利與完整的進行。 *概念層:負責向上的物件與屬性顯露與存取。 *對應層:將上方的概念層和底下的儲存層的資料結構對應在一起。 *儲存層:依不同資料庫與資料結構,而顯露出實體的資料結構體,和Provider一起,負責 實際對資料庫的存取和SQL的產生。 架構 概念層結構 概念層結構定義了物件模型(ObjectModel),讓上層的應用程式碼可以如物件導向的方式般存 取資料,概念層結構是由CSDL(ConceptualSchemaDefinitionLanguage)所撰寫。 對應層結構 對應層結構負責將上層的概念層結構以及下層的儲存體結構中的成員結合在一起,以確認資料的 來源與流向。對應層結構是由MSL(MappingSpecificationLanguage)所撰寫。 儲存層結構 儲存層結構是負責與資料庫管理系統(DBMS)中的資料表做實體對應(PhysicalMapping),讓資 料可以輸入正確的資料來源中,或者由正確的資料來源取出。它是由SSDL(StorageSchema DefinitionLanguage)所撰寫。 開發工具 目前ADO.NETEntityFramework的開發,在VisualStudio2008中有充分的支援,在安裝 VisualStudio2008ServicePack1後,檔案範本中即會出現ADO.NET實體資料模型(ADO.NET EntityDataModel)可讓開發人員利用EntityModelDesigner來設計EDM,EDM亦可由Windows 記事本等文字編輯器所編輯。 支援廠商 目前已有數個資料庫廠商或元件開發商宣佈要支援ADO.NETEntityFramework[5]: *Mircosoft,支持MsSQL. *CoreLab,支援Oracle、MySQL、PostgreSQL與SQLite資料庫。 *IBM,實作DB2使用的LINQProvider。 *MySQL,發展MySQLServer所用的Provider。 *Npqsql,發展PostgreSQL所用的Provider。 *OpenLinkSoftware,發展支援多種資料庫所用的Provider。 *PhoenixSoftwareInternational,發展支援SQLite資料庫的Provider。 *Sybase,將支援Anywhere資料庫。 *VistaDBSoftware,將支援VistaDB資料庫。 *DataDirectTechnologies,發展支援多種資料庫所用的Provider。 *Firebird,支援Firebird資料庫。