1、前言
在了解Efcore之前我們先得來了解ORM框架、它的全稱為object relation mapping、也叫做對象關系映射、可以通過對象的思想來完成對於數據庫的操作;也是基於面向對象的思想應用到數據庫的操作。我個人覺得這種思想還是挺不錯的、那么我們今天的Efcore就是ORM眾多框架中的一種、Efcore全稱為Entity Framework Core是由微軟推出的一種對象關系映射。並且EF Core 可用作對象關系映射程序 (O/RM),這可以實現以下兩點:
- 使 .NET 開發人員能夠使用 .NET 對象處理數據庫。
- 無需再像通常那樣編寫大部分數據訪問代碼。
Efcore相關文檔如下:https://docs.microsoft.com/zh-cn/ef/core/ 同時可兼容多種常用的數據庫、其中與sqlserver搭配使用效果最好、畢竟一家的廠商嘛。我個人覺得Efcore還是一種比較好的思想、利用我們后台開發語言面向對象的思想去應用到我們數據庫上、從開發者而言這其實是一種思想的跨域、只不過Efcore它需要兼容的更多、提供更多的功能導致內部會有大量的反射機制所以性能不是很好、導致很多企業不是很推崇、同時這也是微軟的老問題、希望做的廣而全、所以從某中程度上說是存在一定的弊端、盡管如此我還是一如既往的支持、接下來准備實操起來、首先是基於Dbfirst的方式來實操、並基於VS2019、SqlServer2014環境那么在實操的過程中按照以下步驟操作
- 創建.Net5控制台應用(EFCoreTest)、測試數據庫連接實例是否正常
- nuget引用相關的程序集依賴環境
- 基於腳本生產后台對象模型
- 編寫后台代碼實現CRUD
2、創建.Net5控制台應用並測試數據庫連接實例
名稱為EFCoreTest、數據庫實例連接正常
3、nuget引用相關的程序集依賴環境
一共需要引入以下依賴包
-
Microsoft.EntityFrameworkCore
-
Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.SqlServer.Design
-
Microsoft.EntityFrameworkCore.Tools
安裝成功、編譯正常
4、基於腳本生產后台對象模型
點擊VS2019導航工具欄、尊重Nuget包管理器中的程序包管理器控制台、輸入
1 Scaffold-DbContext "Data Source=DESKTOP-C4SF5PK;Initial Catalog=MyBBSDb;User ID=sa;Password=123456" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -ContextDir / -Context MyBBSDbContext -Force
Data Source需要連接數據庫的地址信息
成功后控制台項目會根據數據庫中的表結構對象生成后台相應的實體、和MyBBSDbContext、表示當前Db連接的實例MyBBSDbContext 、其中包含相應表結構、字段
5、編寫后台代碼實現CRUD
1 using (var Db=new MyBBSDbContext()) 2 { 3 //此處實例基於MyBBSDb中User表操作數據 4 Console.WriteLine("-----添加數據-----"); 5 User user = new User() { UserName="陳大寶",UserNo="123",Password="&&&",UserLevel=2}; 6 Db.Add(user); 7 Db.SaveChanges(); 8 9 Console.WriteLine("-----查詢數據-----"); 10 //根據ID倒序 取出最新一條數據 11 var userdata = Db.Users.OrderByDescending(c => c.Id).FirstOrDefault(); 12 13 Console.WriteLine($"當前ID為{userdata.Id},用戶名為{userdata.UserName}"); 17 Console.WriteLine("-----修改數據------"); 18 19 userdata.UserName = "陳大寶啦啦啦"; 21 Db.Update(userdata); 22 Db.SaveChanges(); 23 26 Console.WriteLine("-----刪除數據------"); 28 userdata.UserName = "陳大寶啦啦啦"; 30 Db.Remove(userdata); 31 Db.SaveChanges(); 37 38 }
未添加數據前數據庫數據為一共為8條:
執行添加代碼查詢數據庫后
1 //此處實例基於MyBBSDb中User表操作數據 2 Console.WriteLine("-----添加數據-----"); 3 User user = new User() { UserName="陳大寶",UserNo="123",Password="&&&",UserLevel=2}; 4 Db.Add(user); 5 Db.SaveChanges();
查看數據庫添加后為9條數據
執行修改代碼;
1 //根據ID倒序 取出最新一條數據 2 var userdata = Db.Users.OrderByDescending(c => c.Id).FirstOrDefault(); 3 4 Console.WriteLine($"當前ID為{userdata.Id},用戶名為{userdata.UserName}"); 5 6 7 8 Console.WriteLine("-----修改數據------"); 9 10 userdata.UserName = "陳大寶啦啦啦"; 11 12 Db.Update(userdata); 13 Db.SaveChanges();
查看數據庫;
執行刪除代碼;
1 Console.WriteLine("-----刪除數據------"); 2 3 userdata.UserName = "陳大寶啦啦啦"; 4 5 Db.Remove(userdata); 6 Db.SaveChanges();
查看數據庫;刪除成功
6、總結
那么以上就是基於.Net5結合Efcore中DbFirst實現簡單增刪改查功能、