MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例
来源:互联网 发布:2017网络机顶盒排行榜 编辑:程序博客网 时间:2024/05/21 06:22
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】项目设置为启动项目,编译运行:
参考文章:
https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations
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)介绍及示例
- EF codefirst 数据库迁移
- EF CodeFirst 数据库迁移
- EF Core DBFirst
- EF CodeFirst 数据库初始化和迁移
- EF下CodeFirst、DBFirst与ModelFirst分析
- EF下 CodeFirst、DBFirst与ModelFirst分析
- EF codefirst数据迁移
- C# 之 EF CodeFirst创建MySQL数据库
- EF之DBFirst数据库先行
- 【EF系列】DBFirst数据库优先
- 将EF项目从dbfirst转化为codefirst
- 一步步学习EF Core(1.DBFirst)
- 在.NET Core类库中使用EF Core迁移数据库到SQL Server
- 使用EF CodeFirst根据实体类生成数据库
- MySql For EF CodeFirst例子
- EF core 2.0 调用MySql数据库存储过程
- migration数据库迁移
- asp.net core MVC 过滤器之ActionFilter过滤器(二)
- ASP.NET Core 使用Cookie验证身份
- asp.net core MVC 过滤器之ExceptionFilter过滤器(一)
- .NET Core 2.0迁移技巧之MemoryCache问题修复
- Razor Page–Asp.Net Core 2.0新功能 Razor Page介绍
- MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例
- .NET Core 2.0迁移技巧之web.config配置文件
- 程序配置&amp;ConfigurationManager
- Orleans简单配置
- Entity Framework Core 2.0 特性介绍和使用指南
- 迁移.net framework 工程到.net core
- Orleans稍微复杂的例子—互动
- C#使用Xamarin开发可移植移动应用(5.进阶篇显示弹出窗口与通讯中心)附源码
- Android7.0 CTS 测试环境搭建 及CTS测试套件