一. 前提
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数据库,并进行相应配置。
(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(option => option.UseMySQL(Configuration["TestDB1Str"]));
4.进行代码测试,如下:
public classHomeController : Controller
{publicTestDB1Context _context1;publicHomeController(TestDB1Context context1)
{this._context1 =context1;
}publicIActionResult Index()
{#region 01-DBFirst模式测试{var data1 = newT_User()
{
id= Guid.NewGuid().ToString("N"),
userName= "Marren"};
_context1.Add(data1);int count =_context1.SaveChanges();var data =_context1.T_User.ToList();
}#endregion
returnView();
}
三. CodeFirst模式
1.在项目中新建“MySql02”文件夹,将以前框架中的上下文和实体类复制过来,然后在ConfigureService中对上下文进行注册,然后在控制器进行注入。
1 public classHomeController : Controller2 {3
4 publicHomeController(CoreFrameDBContext context2)5 {6 this._context2 =context2;7 }8
9 publicIActionResult Index()10 {11
12 #region 02-CodeFirst模式测试
13 {14 _context2.Database.EnsureDeleted();15 _context2.Database.EnsureCreated();16
17 var data = newT_SysOperLog()18 {19 id = Guid.NewGuid().ToString("N"),20 userId = "001",21 operTime =DateTime.Now22 };23 _context2.Add(data);24 int count =_context2.SaveChanges();25 var myData =_context2.T_SysOperLog.ToList();26
27 }28 #endregion
29
30 returnView();31 }32
33 }
2.利用代码【_context2.Database.EnsureCreated();】创建数据库。
见上述代码
3.观察MySql数据库中新生成的数据库“CoreFrameDB”,并进行增加和查询操作测试
PS:后续补充详细的代码配置 和 指令配置。
!
作者 : Yaopengfei(姚鹏飞)
声明1 : 本人才疏学浅,用郭德纲的话说“我是一个小学生”,如有错误,欢迎讨论,请勿谩骂^_^。
声明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。