第八节: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 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
 
posted @   Yaopengfei  阅读(2870)  评论(1编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示