對 ADO.NET Entity Framework 的認知

節自我回覆 EMail 的內容,放在此處希望能收集到其他的看法:

ADO.NET Entity Framework 主要是讓資料來源與程式撰寫隔絕開來,概念應該來自 Java 陣營的 OR Mapping。希望程式設計者認的是物件模型,用的是 class、method、property,而不是 tables、relations、stored procedures、columns。而稱這些物件類別 class 為 entity。

個人認知的目的如下:

1.屏蔽關聯複雜性,也就是一個訂單的更新,可能牽涉數個資料表間的一對多關係。則 programmer 只要認 Order 類別,透過 method 和 property 的操作,由 Framework 提供 SQL 的 code generate

2.提供物件導向的特性,例如員工繼承自人,但資料表內並沒有員工和人這兩個資料表與繼承關係。Programmer 依然實作 inheritance,Framework 自行 mapping 相關屬性與 SQL Generate

3.DB 的定義更動與程式無關,若 DB 的 table 定義更動,只需要更新 Mapping Schema/Storage Schema 層

4.可更換 DB,若從 SQL Server 換 Oracle,只需要更新 Mapping Schema/Storage Schema 層

5.讓 DB 可以經由包裝後,變成 service,因為 relation table 不太可能當 service,但包裝後的 object class 可以當作 service

而 Entity Framework 依然是以 collection 的方式提供物件,所以可提供 LINQ 存取,讓 Programmer 不分 Entity Framework 還是直接存取 SQL,其資料邏輯程式碼皆不變。

若大家有興趣,可以跟 Cheryl copy 她剛拿到的 SQL 2008 CTP6 Demo VPC R3 版,其 Page 112 後的 Demo Script 就在做這個。

目前為止,整個 LINQ to SQL、ADO.NET Entity Framework 和 ADO.NET Data Service 看起來與 SQL Server 2008 沒有關係,都是 .NET Team 做的。僅能說 VS.NET 開發環境支援 SQL Server 2008。上次赴美時,VS 2008 尚無法連接 SQL 2008,透過 Entity Data Model Editor 設計 Table-Entity 的 classes,但 Cheryl 給的 Demo VPC R3 可以…。看來,VS.NET 2008 在 SQL 2008 正式版 launch 時,有望同步支援…

LINQ 的介紹請參閱我曾經撰寫的文章:http://www.ithome.com.tw/plog/index.php?op=ViewArticle&articleId=10666&blogId=579

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: