淺談 Entity Framework 與 ADO.NET 差異

Entity Framework 是ASP.NET MVC 串接底層資料來源最重要的技術之一,由於ASP.NET MVC的彈性相當大,事實上你並不一定要使用 Entity Framework 就能利用 ASP.NET MVC 開網站,直接使用傳統 ASP.NET 開發人員熟悉的 ADO.NET 也是可行,只是如此一來便無法獲得 Entity Framework 帶來的好處,例如強型別資料模型處理等等,運用內建的精簡化領域模型設計,這對於應付大型網站開發相當有用,相較於 ADO.NET 更適於用在網路開發環境,可以大幅簡化大規模系統開發的複雜度。

傳統的 .NET 應用程式透過 ADO.NET 提供的類別,傳送 SQL 敘述回後端資料庫引擎進行解譯,執行特定的資料操作,然後取得回傳的結果。由於直接對資料庫進行存取,因此前端程式與後端資料庫結構緊密結合,導致未來資料庫更新與維護的困難,開發人員透過良好的架構與分層設計,降低前端程式與資料庫間的耦合性,現在藉由 Entity Framework 我們可以更容易處理相關的問題,建立實體資料模型反映真實世界的問題,並且透過附加的設計對應底層資料結構,避免程式與資料庫間的直接關聯。

Entity Framework 之前,在預設的情形下,使用 ADO.NET 的開發人員必須直接針對底層資料庫物件撰寫程式進行互動,包含實體資料表與各種資料庫元素,例如預存程序、檢視表等等。來到 Entity Framework ,開發人員不再針對資料表進行存取,取而代之的是實體資料模型。


上方是傳統的資料存取架構,其中透過 ADO.NET 傳送 SQL 與資料庫進行互動,下方是採用 Entity Framework 的資料存取方案,其中間接的透過實體資料模型傳送 SQL 指令,而開發人員所需處理的則是 LINQ 或是 Entity SQL 敘述,Entity Framework 會自動將它們轉換成為對應的關聯式 SQL 。


沒有留言: