###### tags: `ASP.NET` # ASP.NET CORE3.1 ### 專案介紹 .NET Framework Shp/Ods .NET Core Web Api 程式進入點->Program.cs->呼叫 WebHost Builder 實例化後啟動 WebHost -> 實例化 UseStartup 啟動 Starup.cs ( Method: ConfigureServices / Configure ) **MVC** Models: 存放資料表 Controller: 存放邏輯 / Api Migration : 維持 Models 和 DataBase 之間的同步 ASP.NET CORE WebApplication 應用介面 ( 有前端畫面呈現 ) ASP.NET CORE Api 串接接口 ( 可用來建置 Swagger UI ) --- ### 工具套件 **Scaffold控制器** Scaffold 是一種 ASP.NET MVC 程式碼產生器,可以幫我們迅速產生具備 CRUD 的 API。 **EntityFrameworkCore 屬於 物件關聯對映( Object Relational Mapping)** **做法 SOP:** EF Core 內建 SQL Server、SQLite、InMemory(僅測試用,無法持久保存資料) 三種資料庫實作。 **應用 SOP:** 先定義好 Model,繼承 Microsoft.EntityFrameworkCore.DbContext 宣告自訂 DbContext (Repository Pattern),DbContext 透過 DbSet<TModel> 屬性涵蓋涉及的 Model 型別對映應資料表對象。 **實作方法:** 擺脫傳統 SQL 不須了解 SQL 語法且可移植性強,採用語法相對簡單,主流有 Code First、DB First,適用於需要 CI/CD 的情況、通常搭配 LINQ 語法查詢功能資料來執行篩選、排序及分組作業。但在較複雜的資料表查詢時, Dapper 還是佔有優勢(效能比較快)。 **Dapper:** 使用傳統 SQL 實作,最大優勢是查詢速度快,大資料查詢效率比 EF CORE 快很多。 --- ### --型別系統-- **-方法簽章-** 通過指定方法的訪問級別(例如 public 或private)、可選修飾符(例如abstract 或sealed)、返回值、名稱和任何方法參數,可以在類或 結構中聲明方法。 **-泛型-** 泛型可讓您將方法、類別、結構或介面,修改成其發揮作用的精確資料類型 優點: 1. 類型安全: 在編譯時會強制執行,不需撰寫程式碼測試是否為正確資料類型。 2. 程式碼較少且更容易重複使用程式碼: 不需要從基底類型繼承,例如LinkedList<T> ![](https://i.imgur.com/1g4S67g.png) 3. 效能較佳: 泛型集合類型在儲存和管理實值類型上,通常有較好的表現。 4. 泛型簡化了動態產生的程式碼 使動態產生的程式碼不須產生類型。 5. 泛型委派讓類型安全回呼不需要建立多個委派類別 之後研究~ **-介面-** 介面的中心思想是: "封裝隔離" 定義屬性及方法,並提供擴充性。 **-類別-** 實作定義的屬性及方法。