EF Core 数据库迁移(Migration)

工具与环境介绍

1.开发环境为vs 2015

2.mysql EF Core支持采用  Pomelo.EntityFrameworkCore.MySql   源代码地址(https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql

场景

设计两张表 用户表(user)和发帖表(user)

一个用户对应多个用户

Coding Begin

1.新建项目(新建一个空console项目)

2.添加Nuget.config

增加两个feed,一个是Pomelo(mysql ef core的支持),一个是nuget

代码如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="Pomelo" value="https://www.myget.org/F/pomelo/api/v3/index.json" />
    <add key="nuget.org" value="https://www.nuget.org/api/v2" />
  </packageSources>
</configuration>

3.在project.json中增加ef core的依赖,同时增加EF Tool(用于数据库的迁移)

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0"
    },
    "Pomelo.EntityFrameworkCore.MySql": "1.0.0",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
  },

  "tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": "dnxcore50"
    }
  }
}

4.增加User,Post实体 和DB数据库上下文文件

代码分别如下:
public class User
 {
     public int Id { set; get; }     

     public string UserName { set; get; }    

     public string Password { set; get; }
 }

public class Post
{
      public int Id { set; get; }
      public string Title { set; get; }
      public string Description { set; get; }
      public DateTime CreatedDate { set; get; }
      public int UserId { set; get; }
}

  public class DB : DbContext
    {

        public DbSet<User> Users { set; get; }

        public DbSet<Post> Posts { set; get; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
        }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
         => optionsBuilder
             .UseMySql(@"Server=localhost;database=migrationtest;uid=root;pwd=Password12!;");
}
 

5.通过Migration生成数据库

在vs中的“程序包管理器控制台”中输入如下两个命令
Add-Migration init(执行此命令项目生成一个目录(Migration))
Update-Database init

执行之前

执行Add-Migration init(生成Migration文件夹)
 
执行 Update-Database init
执行命令之后,数据库生成
Post表

6.往数据库插入数据

7.修改实体字段,在post实体中增加一个字段和修改一个字段的名字

修改之后的post如下

public class Post
{
     public int Id { set; get; }     

     public string Title { set; get; }

     public string Hint { set; get; }

     public DateTime CreatedDate { set; get; }    

     public int UserId { set; get; }   

     public string Remark { set; get; }

}

8.执行迁移的命令

Add-Migration updatedb
Update-Database updatedb

执行迁移之后的post表

时间: 2024-10-16 02:51:57

EF Core 数据库迁移(Migration)的相关文章

[EF Core]数据迁移(二)

摘要 在实际项目中,大多都需要对业务逻辑以及操作数据库的逻辑进行分成操作,这个时候该如何进行数据的迁移呢? 步骤 上篇文章:EF Core数据迁移操作 比如,我们将数据上下文放在了Data层. 看一下BlogContext内容如下: public class BlogContext : DbContext { public BlogContext(DbContextOptions options) : base(options) { } public DbSet<User> Users { s

EF codefirst 数据库迁移

如果出现 未能加载文件或程序集“Microsoft.VisualStudio.Shell, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项.系统找不到指定的文件. 重新安装EF 命令Install-Package EntityFramework 在此之后 主要是3步走: 1:Enable-Migrations -ContextTypeName MvcMovie.Models.MovieDbC

ef core数据迁移的一点小感悟

ef core在针对mysql数据迁移的时候,有些时候没法迁移...有两种情况没法迁移,一种是因为efcore的bug问题导致没法迁移,这个在github上有个问题集,另外一种是对数据表进行较大幅度的变更,导致外键导航之类的变更较多,无法正常迁移,并且涉及到该表的迁移有多条. 然后我就自己琢磨,在不删除所有迁移记录的情况下怎么顺利把数据表更改掉,然后摸索了一阵,确实成功了,步骤如下. 1.先把表备份后,删除这个表.2. 在migration记录表中,涉及到该表的迁移全部删除.3. 删除迁移记录中

9. EF Core数据库索引与备用键约束

一.设置索引 protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Blog>().HasIndex(b => b.Url); //Url字段索引 modelBuilder.Entity<Blog>() .HasIndex(b => b.Url) .IsUnique();//Url字段的唯一索引 modelBuilder.Entity<Blo

EF Code First 数据库迁移Migration剖析

1.简介 Entity Framework 的Code First 方式,提供了一种方式:编写模型Model,生成模型变更,根据模型变更修改数据库. 而其所以来的环境就是强大的Nuget,如果还在是VS2010一下的同学,请不要往下看了,将无一益处.   2.操作步骤 1)建立或修改Model,即实体类:     这里演示修改: public class BootStrapLists { public int ID { get; set; } public string Title { get;

【Yii2.0.4】关于advanced模板中数据库迁移Migration的补充

1.文件路径:advanced/console/migrations/m130524_201442_init.php 2.补充点:增加约束"username""email"验证的唯一性: 原代码: <?php use yii\db\Schema; use yii\db\Migration; class m130524_201442_init extends Migration {     public function up()     {         $

基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(2) - EF Core (MySQL) CodeFirst 数据库迁移与依赖注入

概述 上一章,我们简单的搭建了依赖注入的三层架构,但是,没有真正的使用,而我们现在就使用MySQL数据,基于 EF Core 的 DbFirst 进行框架搭建. 微软爸爸官方文档:使用新数据库在 ASP.NET Core 上开始使用 EF Core    数据库表字段命名规范 步骤 1. 右击 Entity 项目,点击"管理NuGet程序包" 2. 安装以下三个包 Microsoft.EntityFrameworkCore     安装版本:2.1.0 Microsoft.Entity

EF Core Model更新迁移

EF Core 迁移 感觉就是以前EF Code First的自动同步数据库功能 内容:在你新增.更新TableModel后,如何自动化的更新DB中的真实Table.以及对这些更改进行一个版本控制. 本文将以一个示例进行简单明了的演示输出.(不会很详细,只记录主要步骤) 当下我们已经有了一个ASP.NET Core的web应用程序,本文我们所关心的只有2个: 1.Model 2.DB Table 当下: Model 最后一个为导航属性,无视. Table 现在我们要在Model/Student.

(3).Net Core的EF Core的使用

EF Core(Entity Framework Core)是 EF 的.net core 版本.EF Core 对 SQLServer 支持很好,也可以在Linux下连接SQLServer.不过如果在Linux下首选MySQL,因此这次试一试MYSQL. EFCore 的 Nuget: Microsoft.EntityFrameworkCore(一般不需要单独安装,安装mysql的包的时候会把相关依赖的包自动下载下来). 官 方 的 mysql  ef  provider经网上查资料网友告知还