• 第八节: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:ProgramDataMySQLMySQL Server 5.6my.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 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
     
  • 相关阅读:
    Android UI 如何让TextView中的文字居中显示
    Android日志服务例子,将日志保存在文件中并每天产生一个日志文件
    Android 获取屏幕尺寸与密度
    Android 学习Tabhost
    Android与服务器端数据交互(http协议整合struts2+android)
    Android的计量单位px,in,mm,pt,dp,dip,sp
    Java struts2中StrutsPrepareAndExecuteFilter 异常
    Http Module 介绍
    Http 请求处理流程
    HttpRuntime2
  • 原文地址:https://www.cnblogs.com/yaopengfei/p/11507557.html
Copyright © 2020-2023  润新知