使用 Entity Framework 實現彈性的資料模型 【转载】
/
0 Comments
部分摘录如下:
這個架構當初在 2006 年是以 ADO.NET vNext 引進,而現在已經備妥要在 Visual Studio® 2008 SP1 中亮相。經過這幾年在類似產品的一連串失敗之後,Microsoft 在 Visual Studio 2008 中發行了兩項技術,它們在某種程度上屬於物件關聯式對應 (Object Relational Mapping,ORM):LINQ to SQL 及 ADO.NET Entity Framework隨著市場開始採用這些技術,開發人員現在想知道過去的來龍去脈,以及 Microsoft 的下一步。他們也想知道開發這些技術的內幕、Entity Framework 與市場上其他 ORM 技術不同之處,以及 Microsoft 未來將如何繼續投資與發展這些技術?
在 Visual Studio 2008 的初版之後,有許多篇文章聚焦於 LINQ to SQL,還有一些文章討論該使用哪一項技術 (請參閱 msdn.microsoft.com/data)。在本文章中,我將把重點放在 Entity Framework,並針對開發期間如何及為何做選擇,提供更深入的探討。
Microsoft® 實體資料模型 (Entity Data Model,EDM) 是以 Dr. Peter Chen 的實體關係 (Entity Relationship,ER) 模型為基礎,是 ADO.NET Entity Framework 背後真正的驅動力。EDM 也是 Entity Framework 與市場上其他 ORM 式技術之間最大差別的特性。EDM 建置在 ER 模型之上,用以提升模型的抽象層,使其優於邏輯模型但同時保留實體與關係的概念。
為何需要另一個資料模型?
那麼,為何需要另一個模型呢?由於公司處理的資料量不斷增加,要了解資料以及在該資料上開發應用程式變得非常困難。資料庫結構描述在設計時有儲存上的考量,例如資料完整性、效能及管理,因此往往不容易了解。通常這些結構描述與應用程式結構也不一致,這使得開發及維護工作更加複雜。
將資料結構與所建置之應用程式分開的自訂解決方案很常見。只可惜,由於每一個應用程式的自訂解決方案數量、各種方式及資料模型化所需步驟都不一樣,所以問題不斷擴大。產業開始出現一致的需求,亦即要定義及開發一種應用程式層級的網域模型,且要與存放區的邏輯模型明確區分。於是,Entity Framework 就問世了。
只不過是另一個 ORM?
到目前為止,許多人認為 Entity Framework 只不過是市場中的另一個 ORM 而已,若只看過該產品的第一版,那麼這種看法是可以理解的。就這樣的角度而言,該產品到目前為止所涵蓋的許多部分,都是 ORM 所處理的一組核心案例。不過,到目前為止的許多分析指出,Entity Framework 也不一定能夠如您所想地涵蓋市場中其他 ORM 的所有功能,這是事實。
Microsoft 在這塊領域的投資目標,是要延伸傳統 ORM 產品,而 Entity Framework 正是更廣泛的 EDM 策略的第一步,稍後我將進一步說明這一點。正如我在本文開頭提過的,EDM 會建立更高階的網域模型,甚至超越 Entity Framework 和傳統 ORM 的境界。我們預期,經過未來幾個版本的 Microsoft .NET Framework、Visual Studio、SQL Server® 和其他 Microsoft 技術之後,您就可以開始看到採用 EDM 的人數有所增加。
正如本文所討論的許多產品決策中所看到的,這主要是受到這項預期和 EDM 趨勢的整個願景所帶動。在做出許多決策時,其明確意圖是希望由 Reporting Services 和 Analysis Services 之類的技術採用。藉由讓服務得以透過一致的網域模型提供,即可為客戶帶來很大的益處。
此願景的第一步,就是要隨 Visual Studio 2008 SP1 同時發行的 Entity Framework 及 ADO.NET 資料服務。可為開發人員提供 REST 應用程式優勢的 ADO.NET 資料服務,將成為 (在 Entity Framework 之外) 使用 EDM 做為其中繼資料交換格式而建立的第一個發行產品。
為了配合此產品的發行,Microsoft 在 MIX 2008 示範了一些不同的 Windows Live™ 屬性,其中使用 ADO.NET 資料服務通訊協定和 EDM 來公開其資料。同樣地,因為現在我們開始要規劃下一版的 SQL Server 和 Visual Studio,所以團隊會以 EDM 和 Entity Framework 為核心,致力於實現更優異的整體開發體驗。
作者:陈希章 出处:http://blog.csdn.net/chen_xizhang |