第八節:EF Core連接MySql數據庫


一. 前提

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 : 原創博客請在轉載時保留原文鏈接或在文章開頭加上本人博客地址,否則保留追究法律責任的權利。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM