NET Core 使用EF Core的Code First迁移和DBFirst

DBFirst

1)Microsoft.EntityFrameworkCore 
(2)Microsoft.EntityFrameworkCore.Design 
(3)Microsoft.EntityFrameworkCore.SqlServer 
(4)Microsoft.EntityFrameworkCore.Tools 

从VS的菜单栏"工具"选项中打开"程序包管理器(Package Manager)控制台"再输入:

Scaffold-DbContext -Connection "Server=.;Database=EFCoreDemo;uid=sa;pwd=123" Microsoft.EntityFrameworkCore.SqlServer -OutputDir "Models"

-OutputDir "Models" 会在项目中添加models文件夹,生成的context和实体类都放到models文件夹中,如不加,实体则直接生成到项目中

 

 

Code First

首先创建dbContext和Model实体

public class Employee
    {
        public int EmployeeId { get; set; }
        public string Name { get; set; }
        public string Address { get; set; }
        public string CompanyName { get; set; }
        public string Email { get; set; }
        public int age { get; set; }
    }
public class dbContext : DbContext
    {
        public dbContext(DbContextOptions<dbContext> options) : base(options)
        {

        }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Employee>().HasData(
                new Employee() { EmployeeId = 1, Name = "Robin", Address = "上海", CompanyName = "腾讯", Email = "Robin@tengxun.com", age = 22 },
                new Employee() { EmployeeId = 2, Name = "Susan", Address = "北京", CompanyName = "头条", Email = "Susan@toutiao.com", age = 20 });
        }
        public virtual DbSet<Employee> Employee { get; set; }
    }
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "ConnectionStrings": {
    "SqlConn": "data source=.;Initial Catalog=UserInfo;User ID=sa;Password=123456;MultipleActiveResultSets=True;App=EntityFramework;"
  },
  "AllowedHosts": "*"
}

 

 

下面可以使用Entity Framework Core Migrations生成数据库和表了。

从VS的菜单栏"工具"选项中打开"程序包管理器(Package Manager)控制台",然后选择要为其生成迁移代码的默认项目,这里选择的项目是我们的EFCoreMigration。

为了创建迁移代码文件,需要使用“ add-migration MigrationName”命令。这里我们就把MigrationName的文件名称改为MigrationDB,在Package Manager控制台中,只需键入“ add-migration MigrationDB”命令,然后按Enter。

 

 成功执行add-migration命令后,它将在项目中创建一个名为“ Migrations”的文件夹,并使用在执行带有迁移脚本文件名称的add migration命令时提供的名称MigrationDB创建该类。在这个MigrationDB类中可以看到基于模型(员工)的表结构,该表结构已准备好生成数据库。

我们仅创建了负责创建数据库及其表的迁移脚本。但是我们还没有创建实际的数据库和表。这就需要执行生成好的迁移脚本,用于生成实际的数据库和表。执行迁移脚本的命令用“ update-database”。

目前,我们只有一个迁移脚本,所以不需要提供迁移名称,直接用update-database命令。如果我们有多个迁移脚本,则必须提供名称以及命令update-database MigrationDB,如下所示:

 

 上面的命令成功执行后,打开SQL Server Management Studio查看数据库。将找到Code First迁移进来的数据库EmployeeDB、数据库表Employees和Entity Framework迁移历史记录表__EFMigrationsHistory

 

 

现在,修改Employee模型,并添加一个新的属性字段,如薪水Salary,其类型为float。

public class Employee
{
    public int EmployeeId { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public string CompanyName { get; set; }
    public string Email { get; set; }
    public int age { get; set; }
    public float Salary { get; set; }
}

转到程序包管理器控制台并运行以下命令以添加迁移文件,这一次,我们将迁移的名称指定为“ addsalary”。

add-migration addsalary

了使用新列Salary作为薪水来更新数据库中的表,需要在程序包管理器控制台运行以下命令来更新数据库:

update-database addsalary

 

 

更多详情https://blog.csdn.net/ananlele_/article/details/107140177

 

posted @ 2020-08-25 16:22  netlock  阅读(534)  评论(0编辑  收藏  举报