使用前必須要先知道 Entity Framework 有兩個版本。
- Entity Framework Core : 適用於 .NET 的新式物件資料庫對應程式。 其支援 LINQ 查詢、變更追蹤、更新以及結構描述移轉。
- Entity Framework 6 : 透過資料庫提供者外掛程式模型搭配使用 SQL Server/Azure SQL Database、SQLite、Azure Cosmos DB、MySQL、PostgreSQL 及更多資料庫。
因此,使用EF6表現上會與 EF core 功能會也所不同。EF6是基於ADO.NET發展出來的物件關聯對應 (O/R Mapping),利用了抽象化資料結構的方式,將每個資料庫物件都轉換成應用程式物件 (entity),而資料欄位都轉換為屬性 (property),關聯則轉換為結合屬性 (association),讓資料庫的 E/R 模型完全的轉成物件模型。
參考文件
- microsoft : microsoft Entity Framewor
- Wiki : Entity Framework
- Wiki : Entity Framework Core
- Wiki : ADO.NET
- The Will Will Web: EF Core 已經不會在 SaveChanges() 的時候對實體模型進行額外驗證
- 複雜類型 - EF 設計工具
- Entity Framework 6
創建方式
這邊操作建議獨立 folder 存放”實體資料模型”。如以下步驟操作步驟
- 選擇 ADO.NET 實體資料模型
- 選擇 “來自資料庫的EF Designer” (本文使用 DB First)
- 選擇連線方式 (連線資訊會直接寫如Web.config當中)
- 選擇版本 (建議選擇6.x穩定版本)
- 選擇指定結構
起手前介紹
如果是初次使用EF的讀者,看看以下說明。
EF 創建後會產生 “DbContext” 可以從 xxx.context.cs 查看、修改、複寫。基於ADO.Net來說 EF 很貼心把 Connection Open()/Close() 寫好,使用上會比較友善許多、簡單。
xxx.edmx 下一篇會介紹如何此用,原則上他是資料庫、實體資料模型比較的參考文件後面再細談。
使用方式
這邊我們看看如何使用 CRUD 方式測試,這邊會使用非常簡單處理方式執行。如果想要本章節DB結構可以參考最下方。
EF 使用規則 :
- 需要先初始化 dbcontext
- 每當執行變更DB動作需要使用SaveChanges()動作
新增
1 | public class CRUD |
修改
這邊稍微留意 EFCore 中是使用 Update
方式更新,EF則是直接修改當前”資料”使用上需要小心使用。
1 | public class CRUD |
刪除
1 | public class CRUD |
查詢
1 | public class CRUD |
本章使用DB結構
1 | /****** Object: Table [dbo].[DEMO_1] Script Date: 2022/12/20 上午 09:59:51 ******/ |
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 John Conte!
評論
DisqusGitalk