zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    BZOJ1119: [POI2009]SLO
    BZOJ1486: [HNOI2009]最小圈
    BZOJ1098: [POI2007]办公楼biu
    BZOJ2242: [SDOI2011]计算器
    PAT A1023
    SpringCloud之整合Feign
    SpringCloud之整合Feign
    小程序在wxml页面格式化类似的2019-02-16T10:54:47.831000时间
    小程序在wxml页面格式化类似的2019-02-16T10:54:47.831000时间
    Javascript基础之-var,let和const深入解析(二)
  • 原文地址:https://www.cnblogs.com/netlock/p/13560376.html
Copyright © 2011-2022 走看看