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

本文介绍了如何使用EF Core 2.0进行数据库迁移,包括CodeFirst和DbFirst两种方法。首先创建.NET Core控制台应用,添加对项目的引用,配置数据库连接,然后通过命令行创建数据库迁移和更新。在CodeFirst方法中,修改实体并更新数据库,为User表的Account列添加唯一索引。DbFirst方法则是通过scaffold命令生成DbContext。文章提供了详细步骤和示例代码。
摘要由CSDN通过智能技术生成

User {

publicintId { get; set; } [MaxLength(32), Required]

publicstringAaccount { get; set; } [MaxLength(32), Required]

publicstringPassword { get; set; } }

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

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

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

Nuget 添加 Microsoft.EntityFrameworkCore.Tools 及 Pomelo.EntityFrameworkCore.MySql(注意勾上:包括预发行版) 的引用;4、编辑 Starts2000.EFCoreCodeFirst.Test.csproj 项目文件,添加如下内容:

最终内容如下:

netcoreapp2.0 Exe 5、添加 TestDbContext 类( 注意:把数据库连接字符串修改为自己的) publicclassTestDbContext : DbContext {

publicDbSet User { get; set; }

protectedoverridevoidOnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySql("server=localhost;database=TestDb;user=test;password=123456;"); }

protectedoverridevoidOnModelCreating(ModelBuilder modelBuilder) {

base.OnModelCreating(modelBuilder);//modelBuilder.Entity().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 中加上:

publicclassTestDbContext : DbContext {

publicDbSet User { get; set; }

protectedoverridevoidOnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySql("server=localhost;database=TestDb;user=test;password=123456;"); }

protectedoverridevoidOnModelCreating(ModelBuilder modelBuilder) {

base.OnModelCreating(modelBuilder); modelBuilder.Entity().HasIndex(u =>u.Aaccount).IsUnique();} }

执行 dotnet ef migrations add UserTableUpdateAccount 命令:

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

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

9、测试数据写入和读取

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

staticvoidMain( string[] args) {

using( varcontext = newTestDbContext()) { context.User.Add(newModels.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 项目文件,添加如下内容:

最终内容如下:

netcoreapp2.0 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 函数修改为如下代码:staticvoidMain( string[] args){

using( varcontext = newTestDbContext()) { context.User.Add(newUser { 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值