首頁 »
2010/03/27

微軟Entity Framework之意圖為何?

Entity Framework創造目的
微軟有個ADO.NET Entity Framework,而Entity Framework之創造目的是什麼,究竟它在.NET這塊技術領域有何意圖?為什麼在ADO.NET程式及SqlDataSource資料來源控制項之外,還要提供一個感覺很複雜,意境抽象的Entity Framework技術呢?


也許您日常是使用ADO.NET手工程式來進行資料庫資料的存取,或者是用SqlDataSource資料來源控制項快速設定與存取資料庫,並與GridView或DetailsView等控制項進行資料繫結與互動,此種資料程式或存取方式為現今多數.NET程式設計師之主流,日子過得這麼愜意又單純,有必要為Entity Framework攪亂一池心中春水,為它而起煩惱心否?

的確Entity Framework說穿了也只是做資料存取,只不過是在意境和層次上有所差異,企圖透過ORM來讓中間過程變得更藝術化,同時在Entity Framework理想國度中,提供ADO.NET與SqlDataSource所沒有的理想,這就非尋常百姓所能體會的,除非你進Entity Framework理想國,體會一趟Entity Framework之旅,才能使你的眼界與觀感有所轉變。

在此列出Entity Framework本身想達到的幾個目的與意境:
1.提供一個O/R Mapping的解決方案
像Open Source陣營很早就有O/R Mapping技術,例如Hibernate,而Java EE 5時也定義了Java Persistence API,那微軟呢?總該有自己的O/R Mapping技術解決方案吧,微軟除輕量級的LINQ to SQL之外,Entity Framework屬於微軟重量級的O/R Mapping,也是微軟現在與未來世世代代的O/R Mapping重心,例如在2010/4月即將發表的.NET 4.0與VS 2010,Entity Framework 1.0將更新為 Entity Framework 4.0,所以Entity Framework才是整齣O/R Mapping方案的主角。

2.提升Application-Level Domain之抽象程度
如果你使用的是ADO.NET與SqlDataSource資料存取技術,那幾幾乎乎肯定,你程式與資料庫Schema是強烈綁定,也就是資料庫欄位用什麼名字,你就得用什麼名字,欄位若命名很差或無意義,例如A01,A02,A03這種無意義的欄位命名法,那很抱歉,你在程式中還是得使用,所以造就十分沒有意義的程式命名。那如果你使用Entity Framework,可將Conceptual Model概念模型與資料來源分離鬆綁,二者可以獨立命名,將無意義的A01,A02,A03轉化成有意義的ProductID,Price,Quantity概念定義,然而再定義二者間的對應關係即可,如此可以有更好的資料彈性架構,減少維護成本

3.可以用單一的LINQ to Entity或Entity SQL查詢各種資料庫

使用單一的LINQ to Entity或Entity SQL查詢各種資料庫而不必更改任何的程式,只需抽換Provider,即可達到跨資料庫平台的目的,若將資料庫換成SQL Server、MySql、Oracle等等,資料存取程式及前端程式仍維持不動,完全不必做任何修改。

4.以EDM(Entity Data Model)來統一所有的資料模型
例如Entity Framework、Data Service、Dynamic Data,甚至將來的Reporting Service、Analysis Service、Portal等所有資料模型都可以用EDM來描述,進而以一致性的LINQ或LINQ to Entity查詢語法查遍所有的資料。

在此扼要介紹Entity Framework創造之目的,在了解它的作用之後,自然就不為無知而惱亂,希望能稍稍為您平息心中因Entity Framework而攪亂的春水,也提供您未來學習新技術的一個取決。

《聖殿祭司。奚江華》


關於.NET中的Operation一詞←上一篇 │首頁
本文引用網址: