一. 前提
1.安裝EF Core連接MySQL的驅動,這里有兩類:
(1).Oracle官方出品:MySql.Data.EntityFrameworkCore (版本:8.0.17)
(2).其他第三方出品:Pomelo.EntityFrameworkCore.MySql (版本:2.2.0)
PS: 本章節我們使用Oracle官方出品的驅動,當然EF Core的基礎驅動必須要安裝的。
(Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.Design、Microsoft.EntityFrameworkCore.Tools)。
2.安裝MySql數據庫,並進行相應配置。
(1).安裝MySql 5.6版本,參考教程:https://www.cnblogs.com/yaopengfei/p/7147806.html
(2).開啟MySql大小寫敏感配置。
注:因為MySql默認表和字段都是不區分大小寫的,這樣會造成DBFirst模式映射到代碼中的類和屬性都是小寫,相對別扭。
配置方法:
找到mysql的配置文件在:C:\ProgramData\MySQL\MySQL Server 5.6\my.ini, 加上下面的兩行配置:
1 [mysqld] 2 lower_case_table_names=0
然后需要重啟MySql數據庫服務!!!! 【net stop mysql,net start mysql】
二. DBFirst模式
1.新建數據庫TestDB1,包含表:T_User(id,userName),T_Role(id,roleName)兩張表。
2.在項目中新建“MySql01”文件夾,通過下面指令進行映射(注解的方式)
【Scaffold-DbContext "Server=localhost;Database=TestDB1;User ID=root;Password=123456;" MySql.Data.EntityFrameworkCore -ContextDir MySql01 -OutputDir MySql01 -UseDatabaseNames -Context TestDB1Context -DataAnnotations】
生成相關文件:
3.相關改造
(1). 注釋生成TestDB1Context中的OnConfiguring,改成在ConfigureService中進行注冊。
(2). services.AddDbContext<TestDB1Context>(option => option.UseMySQL(Configuration["TestDB1Str"]));
4.進行代碼測試,如下:
public class HomeController : Controller { public TestDB1Context _context1; public HomeController(TestDB1Context context1) { this._context1 = context1; } public IActionResult Index() { #region 01-DBFirst模式測試 { var data1 = new T_User() { id = Guid.NewGuid().ToString("N"), userName = "Marren" }; _context1.Add(data1); int count = _context1.SaveChanges(); var data = _context1.T_User.ToList(); } #endregion return View(); }
三. CodeFirst模式
1.在項目中新建“MySql02”文件夾,將以前框架中的上下文和實體類復制過來,然后在ConfigureService中對上下文進行注冊,然后在控制器進行注入。
1 public class HomeController : Controller 2 { 3 4 public HomeController(CoreFrameDBContext context2) 5 { 6 this._context2 = context2; 7 } 8 9 public IActionResult Index() 10 { 11 12 #region 02-CodeFirst模式測試 13 { 14 _context2.Database.EnsureDeleted(); 15 _context2.Database.EnsureCreated(); 16 17 var data = new T_SysOperLog() 18 { 19 id = Guid.NewGuid().ToString("N"), 20 userId = "001", 21 operTime = DateTime.Now 22 }; 23 _context2.Add(data); 24 int count = _context2.SaveChanges(); 25 var myData = _context2.T_SysOperLog.ToList(); 26 27 } 28 #endregion 29 30 return View(); 31 } 32 33 }
2.利用代碼【_context2.Database.EnsureCreated();】創建數據庫。
見上述代碼
3.觀察MySql數據庫中新生成的數據庫“CoreFrameDB”,並進行增加和查詢操作測試
PS:后續補充詳細的代碼配置 和 指令配置。
!
- 作 者 : Yaopengfei(姚鵬飛)
- 博客地址 : http://www.cnblogs.com/yaopengfei/
- 聲 明1 : 本人才疏學淺,用郭德綱的話說“我是一個小學生”,如有錯誤,歡迎討論,請勿謾罵^_^。
- 聲 明2 : 原創博客請在轉載時保留原文鏈接或在文章開頭加上本人博客地址,否則保留追究法律責任的權利。