已經整理好 C#.NET Core CRUD (Create,Read,Update,Delete) 基本資料維護的實作範本,並已上傳至 Github 供下載:https://github.com/kenming/petstore-crud-template-csharp
關於該範本如何執行 (包括跑單元測試)、主要引導功能、開發工具與建置、類別圖展示等,已具體詳細寫在 README.md 文件。
建議要執行該應用程式前,先更改下 Sqlite 資料庫檔案路徑,然後先執行測試專案內的所有單元測試方法。
關於該範本所涵蓋的一些設計思維與所對應的實作問題,版友們可以提問討論與分享想法。關於程式碼的實作細節與設計思維,我還會另撰寫文章詳細說明。
後續的版本演進我會再加上:
- 多個表格關聯的 CRUD 實作。
- 使用 Mock 應用在單元測試,隔離 Service 類別依賴具體 Dao 的資料庫存取。
- 使用 Vue UI 框架整合本範例。
Brief Description
網路上看到關於基本資料維護的 CRUD 範例幾乎都是資料導向 (data oriented) 的寫法,也就是把 MVC Controller 與 資料存取綁在一起。現實上稍有規模的專案採用這種開發模式會導致系統的複雜度提升,不容易應變。
花了幾天時間撰寫了 C#.NET Core (前年有寫過 Java Spring 的版本) 關於單一資料表的 CRUD 程式碼範本,這是一個完全符合三層式架構的應用程式,同時我這個專案範本可以切換 E.F Core 與 ADO.NET 資料庫的存取實作。
關於 Java/Spring 版本,我則打算再重新改寫,架構當然與 C#.NET Core 是一樣的,只是實作的細節必然會調整下。資料庫的存取方式則打算同時提供 JDBCTemplate 與 MyBatis 的 CRUD 範本。
Features
- 提供開發三層式 (Presentation -> Application Logic -> Datasource) 架構的 CRUD 實作範本
- 同時提供 E.F Core (Entity Framework Core) 與 ADO.NET 資料存取方式,並可以切換資料庫存取的實作
- 實作 E.F Core 與 ADO.NET 的 DAO (Data Access Object) 均各自有撰寫單元測試程式 (Unit Test Code)
- 專案內嵌 Sqlite,並使用兩種實作方式:
- File-based 為正常存取用的資料庫,提供給 View 操作
- Memory-DB 應用在單元測試的 Create, Update, Delete ,避免影響到正常資料庫的存取行為
Development
- 使用 Visual Studio Community 2022 版本。
- 使用 C#.NET Core 6 LTS
- 前端使用 ASP.NET Core MVC Web 框架 (View by Razor)
- 後端資料庫使用 Sqlite,並同時使用 E.F Core 與 ADO.NET 兩種資料存取方式