dotnet core 2.0 发布已经好几天了,期间也把原来 dotnet core 1.1 的 MVC 项目升级到了 2.0,升级过程还是比较顺利的,变动也不是太多。升级的过程中也少不了 Entity Framwork Core 的升级,在这篇文章中主要介绍下 MySql 数据库使用 Entity Framwork Core 2.0 如何进行 Code First、Database First 及数据库迁移(Migration),虽然比较基础,但是做到尽量详细。本文所有示例代码已经提交到 GitHub:https://github.com/starts2000/EFCoreDemo,如果觉得对你有帮助,就给个 Star 吧。

一、工具及环境

  • Visual Studio 2017 15.3

  • .NET CORE 2.0 SDK

二、Entity Framwork Core 2.0 MySql Code First 及 数据库迁移(Migration)

1、创建 .NET Core 类库项目 【Starts2000.EFCoreCodeFirst】

2、添加 User 实体类

    public class User{         public int Id { get; set; }[MaxLength(32), Required]        public string Aaccount { get; set; }[MaxLength(32), Required]        public string Password { get; set; }}

最终【Starts2000.EFCoreCodeFirst】项目结构如下:

3、创建 .NET Core 控制台应用项目 【Starts2000.EFCoreCodeFirst.Test】

  • 添加对 【Starts2000.EFCoreCodeFirst】项目的引用;

  • Nuget 添加 Microsoft.EntityFrameworkCore.Tools 及 Pomelo.EntityFrameworkCore.MySql(注意勾上:包括预发行版) 的引用;

4、编辑 Starts2000.EFCoreCodeFirst.Test.csproj 项目文件,添加如下内容:

<ItemGroup><DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /></ItemGroup>

最终内容如下:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>netcoreapp2.0</TargetFramework><ApplicationIcon /><OutputType>Exe</OutputType><StartupObject /></PropertyGroup><ItemGroup><ProjectReference Include="..\Starts2000.EFCoreCodeFirst\Starts2000.EFCoreCodeFirst.csproj" /></ItemGroup><ItemGroup><PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" /><PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.0.0-rtm-10058" /></ItemGroup><ItemGroup><DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /></ItemGroup></Project>

5、添加 TestDbContext 类(注意:把数据库连接字符串修改为自己的

    public class TestDbContext : DbContext{         public DbSet<User> User { get; set; }      

  protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){optionsBuilder.UseMySql(                "server=localhost;database=TestDb;user=test;password=123456;");}        

protected override void OnModelCreating(ModelBuilder modelBuilder){             base.OnModelCreating(modelBuilder);            //modelBuilder.Entity<User>().HasIndex(u => u.Aaccount).IsUnique();        }}

6、打开命令行窗口,切换到 【Starts2000.EFCoreCodeFirst.Test】项目文件夹目录,执行如下命令:

dotnet ef migrations add InitialCreate

如果命令执行成功,可以看到项目目录中新增了如下内容:

7、执行 dotnet ef database update  命令

执行成功后,可以看到数据库及表创建成功。

8、修改实体,并把修改的内容更新到数据库

User 类的 Account 属性对应 User 表的 Account 列应该是唯一的,前面忘记了设置唯一索引,现在在 TestDbContext 中加上:

    public class TestDbContext : DbContext{         public DbSet<User> User { get; set; }     

   protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){optionsBuilder.UseMySql(                "server=localhost;database=TestDb;user=test;password=123456;");}        

protected override void OnModelCreating(ModelBuilder modelBuilder){             base.OnModelCreating(modelBuilder);            modelBuilder.Entity<User>().HasIndex(u => u.Aaccount).IsUnique();}}

执行 dotnet ef migrations add UserTableUpdateAccount 命令:

如果命令执行成功,可以看到项目目录中新增了如下内容:

接着按照 步骤7 的操作,如果成功,可以看到 User 表已经创建了 Account 的唯一索引:

9、测试数据写入和读取

在 Main 函数中添加如下代码:

        static void Main(string[] args){            using(var context = new TestDbContext()){context.User.Add(new Models.User{Aaccount = "CodeFirst-Test-" + DateTime.Now.ToString("yyyyMMddHHmmssfff"),Password = "123456"});context.SaveChanges();Console.WriteLine(context.User.OrderByDescending(u => u.Id).FirstOrDefault()?.Aaccount);}Console.ReadKey();}

把【Starts2000.EFCoreCodeFirst.Test】项目设置为启动项目,编译运行:

三、Entity Framwork Core 2.0 MySql Database First

1、新建 【Starts2000.EFCoreDbFirst】 项目

2、Nuget 添加 Pomelo.EntityFrameworkCore.MySql(注意勾上:包括预发行版) 的引用;

3、编辑 Starts2000.EFCoreDbFirst.csproj 项目文件,添加如下内容:

  <ItemGroup><DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /></ItemGroup>

最终内容如下:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>netcoreapp2.0</TargetFramework></PropertyGroup><ItemGroup><PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.0.0-rtm-10057" /></ItemGroup><ItemGroup><DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /></ItemGroup></Project>

4、打开命令行窗口,切换到 【Starts2000.EFCoreDbFirst】项目文件夹目录,执行如下命令:

dotnet ef dbcontext scaffold "Server=localhost;User Id=test;Password=123456;Database=TestDb" "Pomelo.EntityFrameworkCore.MySql"

执行成功后,项目增加了如下内容:

5、创建 .NET Core 控制台应用项目 【Starts2000.EFDbFirst.Test】进行测试

  • 添加对 【Starts2000.EFCoreDbFirst】项目的引用;

  • 把 Main 函数修改为如下代码:

static void Main(string[] args)
{            using (var context = new TestDbContext()){context.User.Add(new User{Aaccount = "DbFirst-Test-" + DateTime.Now.ToString("yyyyMMddHHmmssfff"),Password = "123456"});context.SaveChanges();Console.WriteLine(context.User.OrderByDescending(u => u.Id).FirstOrDefault()?.Aaccount);}Console.ReadKey();}
  • 把【Starts2000.EFCoreDbFirst.Test】项目设置为启动项目,编译运行:

参考文章:

  1. https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations

  2. https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql

相关文章:

  • .NET Core 2.0 正式发布信息汇总

  • .NET Standard 2.0 特性介绍和使用指南

  • .NET Core 2.0 的dll实时更新、https、依赖包变更问题及解决

  • .NET Core 2.0 特性介绍和使用指南

  • Entity Framework Core 2.0 新特性

  • 体验 PHP under .NET Core

  • .NET Core 2.0使用NLog

  • 升级项目到.NET Core 2.0,在Linux上安装Docker,并成功部署

  • 解决Visual Studio For Mac Restore失败的问题

  • ASP.NET Core 2.0 特性介绍和使用指南

原文地址:http://www.cnblogs.com/Starts_2000/p/mysql-efcore20-codefirst-dbfirst-migration-demo.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例相关推荐

  1. migration mysql_MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例...

    dotnet core 2.0 发布已经好几天了,期间也把原来 dotnet core 1.1 的 MVC 项目升级到了 2.0,升级过程还是比较顺利的,变动也不是太多.升级的过程中也少不了 Enti ...

  2. ASP.NET Core 1.0 使用 MySQL for EF Core 1.0 (.NET Core 1.0)

    经过多天的项目设计实践,本来都几乎放弃使用 MySQL 去使用 MSSQL ,但几经周折还是在找到了在 .NET Core 中使用 MySQL 数据库的方法(官方的进度不敢恭维,现使用的是第三方库), ...

  3. ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First

    ASP.NET Core 开发-Entity Framework Core 1.0 Database First,ASP.NET Core 1.0 EF Core操作数据库. Entity Frame ...

  4. EF Core 2.0使用MsSql/Mysql实现DB First和Code First

    环境 Visual Studio 2017 最新版本的.NET Core 2.0 SDK 最新版本的 Windows PowerShell 开始搭建 1.在 Visual Studio 2017 中创 ...

  5. EF Core 3.0查询

    随着.NET Core 3.0的发布,EF Core 3.0也随之正式发布,关于这一块最近一段时间也没太多去关注,陆续会去对比之前版本有什么变化没有,本节我们来看下两个查询. 分组 我们知道在EF C ...

  6. java EF6,EF Core 2.0和EF6(Entity Framework 6)中配置实体映射关系

    1.EF6中通过EntityTypeConfiguration配置实体映射关系代码 public class AccountMap : EntityTypeConfiguration { public ...

  7. Entity Framework 6.3 和 EF Core 3.0 路线图

    尽管脱离了 .NET Core 发布循环,但是 EF Core 正在开发其 3.0 路线图.除此之外,还对原来的 Entity Framework 进行了一些重要的变更. 更多服务器端的查询 将 LI ...

  8. MySQL在EF Core下的Scaffolding操作

    Pomelo于2016年11月22日发布的MySQL for ef core中,增加了DbContext Scaffolding的支持,这项功能是让开发者可以从现有的数据库中提取表.列.索引及外键成为 ...

  9. Net Core 6.0 webApi+sqlServer数据库教程实战

    Net Core 6.0 webApi+sqlServer数据库教程实战 教程前言 安装net core 环境 构建wepApi项目 操作数据库 接口调用 相关快速扩展 总结 教程前言 本教程从构建项 ...

最新文章

  1. 基于i2c子系统的驱动分析
  2. 服务器文件嗅探,嗅探TFTP配置文件传输
  3. imutils用法总结
  4. 手把手带你用数据库中间件Mycat+SpringBoot完成分库分表
  5. BZOJ 3208: 花神的秒题计划Ⅰ
  6. C# Datatable排序与取前几行数据
  7. Linux 随机启动 Mysql​
  8. 位,字,字节之间关系及关联知识普及
  9. PHP案例:实现登录功能
  10. spring学习--基于注解方式创建对象AOP
  11. Windows活动目录(域服务器)经典系列图文教程
  12. html5 画布保存,html5 (canvas)画布save()和restore()的理解和使用方法
  13. Atitit 信息系统安全法 目录 1. 常见的安全保护目标 1 2. WEB安全风险行为 2 2.1. Injection 2 2.2. Broker Authentication损坏的身份验证
  14. 《给QTreeView表项添加CheckBox和图标》:系列教程之七
  15. ApacheCN 翻译/校对/笔记整理活动进度公告 2019.10.4
  16. word 职称计算机考试大纲,全国职称计算机考试Word2003大纲
  17. 抖音短视频教程VIP培训课程(2019实时更新中)
  18. 计算机时间单位,时间计算机单位之间的换算
  19. java 反射基础_Java反射的基本使
  20. html5简单幻灯片图片转换,用纯CSS实现简单的相册幻灯片

热门文章

  1. lua工具库penlight--08额外的库(二)
  2. 鸟哥学习笔记---网络驱动器设备iSCSI
  3. [笔记].STM32 BOOT[0:1]启动设置
  4. C# 10 新特性 —— 插值字符串优化
  5. 迎.NET6,今日先送200P全新视频教程 / 源码
  6. 抽丝剥茧!Source Generators原理讲解
  7. 2021年,推荐你使用.NET 5的7大原因
  8. .NET 6 Preview 4 已发布,ASP.NET Core 更新内容
  9. 接口管理平台YApi
  10. 使用.NET开发的数据库小工具 DbTool