ASP.NET Core 2.2 WebApi 系列【二】使用EF CodeFirst创建数据库

Code First模式

Code First是指"代码优先"或"代码先行"。

Code First模式将会基于编写的类和配置,自动创建模型和数据库。

一、准备工作

创建一个(.NetCore 类库),命名为NetCoreWebApi.Model。

通过Nuget程序包安装相关依赖 

在类库项目上右键->管理NuGet程序包,下面会打开程序包管理器控制台窗口:

注意版本,因为本人NetCore 是2.2版本,所以程序包都选择了2.2.6

二、正式开始

根据.NET中的类来创建数据库。

在类库项目上右键->添加->新建文件夹,命名为Models,存放相应的实体类。在Models文件夹下面新建实体类:tb_user,实体类的属性如下:

using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace NetCoreWebApi.Model.Models
{
    /// <summary>
    /// 用户表
    /// </summary>
    [Table("tb_User")]
    public class TbUser
    {
        /// <summary>
        /// 用户Id
        /// </summary>
        [Key]
        [Column("userId")]
        [StringLength(32)]
        public string UserId { get; set; }
        /// <summary>
        /// 用户名
        /// </summary>
        [Column("userName")]
        [StringLength(20)]
        public string UserName { get; set; }
        /// <summary>
        /// 邮箱
        /// </summary>
        [Column("email")]
        [StringLength(30)]
        public string Email { get; set; }
        /// <summary>
        /// 创建时间
        /// </summary>
        [Column("createTime")]
        public DateTime CreateTime { get; set; }
    }
}

 

创建数据上下文

在类库项目上右键->添加->类,命名为MyDbContext,并继承DbContext类,DbContext位Microsoft.EntityFrameworkCore.dll程序集中。

using Microsoft.EntityFrameworkCore;
using NetCoreWebApi.Model.Models;

namespace NetCoreWebApi.Model
{
    public class MyDbContext : DbContext
    {
        public MyDbContext()
        {
        }
        public MyDbContext(DbContextOptions<MyDbContext> options)
            : base(options)
        {
        }
        //定义数据集合:用于创建表
        public DbSet<TbUser> TbUsers { get; set; }
    }
}

在appsettings.json中加入连接字符串

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*",
  //数据库连接字符串
  "ConnectionStrings": {
    "SqlServer": "Data Source=.;Initial Catalog=NetCoreWebApi;User Id=sa;Password=123;"
  }
}

在Startup.cs类ConfigureServices方法中添加EF的依赖

        /// <summary>
        /// //负责注入服务
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        public void ConfigureServices(IServiceCollection services)
        {
            //获取数据库连接字符串
            var connectionStr = Configuration.GetConnectionString("SqlServer");
            services.AddDbContext<MyDbContext>
                (options => options.UseSqlServer(connectionStr,
                    e => e.MigrationsAssembly("NetCoreWebApi.Model")));
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }

 

三、使用命令通过代码生成数据库

在程序包命令切换到NetCoreWebApi.Model中

先执行 Add-Migration InitialCreate

执行成功后会在项目中产生一个Migrations文件夹。里面有个快照文件和一个迁移的文件。

 

后执行 Update-DataBase

出现这个就是成功了。

数据库创建成功!