(自我修練一) Entity Framework 與 LINQ 概觀
參考資料來源:Entity Framework與LINQ開發實戰 一書
傳統的資料存取架構有兩個問題:
1. 前端程式與後端資料庫結構緊密耦合:
由於直接對資料庫進行存取,因此前端程式必須與後端資料庫結構緊密結合,才能順利存取。這會造成日後資料庫維護與更新上的困難。
2. SQL 語法的撰寫:
開發人員必須撰寫 SQL 語法來操作資料庫。
EntityFramework 資料存取架構:
就是在前端程式與資料庫之間多架了一層資料結構,稱作實體資料模型(EDM)。
它會對應真正的資料結構,如此避免前端程式直接存取資料庫。(這就解決了問題 1)
而開發人員則是撰寫程式 (透過 LINQ 與 Entity SQL 這兩種敘述) 存取 EDM 即可。EntityFramework
會自動將這兩種敘述轉成對應的關連式 SQL。(這就解決了問題 2)
實體資料模型(EDM):
實體資料模型是一個 XML 檔 (副檔名為.edmx),裡頭的 XML 元素會對應資料庫中的資料表與欄位。
想用手動方式透過 EntityFramework 進行資料庫存取是很困難的!而 Visaul Studio 有內建工具可以
幫助我們 - [實體資料模型建立精靈]、[圖形化介面設計師]。
透過 EntityFramework 存取資料庫有三個步驟:
- 建立實體資料模型,也就是對應底層資料庫結構的 XML 檔案。 (圖中 .edmx 部份)
- 針對建立的實體資料模型,撰寫對應的實體類別。 (圖中 .Designer.cs 部份)
- 設計客戶端程式,透過 LINQ 或 Entity SQL 操作實體類別
1 跟 2 是對應的關係,要手動建立很難!因為這得根據底層資料庫的結構做設計。因此建議使用 Visaul Studio 的工具直接產生,若有需要可再做修改。
LINQ 與 Entity SQL:
Linq 已是 C# 語法的一部份,是一種資料存取標準。幾乎通用於所有資料來源,包括資料集合、XML 與關聯式資料庫。
Entity SQL 是 EntityFramework 的專用語法,類似 SQL 語法。
Entity SQL 與 LINQ to Entity 是兩項支援實體資料模型的技術,可以選擇其一使用。
(LINQ 功能較為強大,比較建議使用)