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()]
public string UserId { get; set; }
/// <summary>
/// 用户名
/// </summary>
[Column("userName")]
[StringLength()]
public string UserName { get; set; }
/// <summary>
/// 邮箱
/// </summary>
[Column("email")]
[StringLength()]
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
出现这个就是成功了。

数据库创建成功!
ASP.NET Core 2.2 WebApi 系列【二】使用EF CodeFirst创建数据库的更多相关文章
- ASP.NET Core 2.2 WebApi 系列【九】使用SignalR (作者:tenghao510 ) 学习及内容补充
原文地址: ASP.NET Core 2.2 WebApi 系列[九]使用SignalR 今天,看到了大牛的这篇博文, 发了一下评论, 我很惊喜, 没想到他很快就回复了我, 而且通过QQ帮助了S ...
- ASP.NET Core 3.0 WebApi 系列【1】创建ASP.NET Core WebApi 项目
目录 写在前面 一.运行环境 二.项目搭建 三.测试 API 四.基础知识 五.写在最后 写在前面 C#语言可以创建RESTful服务,被称作WebApi.在这里总结学习使用支持创建.读取.更新.删除 ...
- ASP.NET Core 2.2 WebApi 系列【一】搭建ASP.NET Core WebApi项目
一.步骤 从“文件”菜单中选择“新建”>“项目” . 选择“ASP.NET Core Web 应用程序”模板,再单击“下一步” . 将项目命名为 NetCoreWebApi,然后单击“创建” . ...
- ASP.NET Core 3.0 WebApi 系列【2】.Net Core 3.0+ CodeFirst + MySql 实现数据的迁移
写在前面 在前一小节中,我们创建了基于RESFULL风格的服务.这个小节,尝试使用CodeFirst+MySql 的方式实现数据迁移. 一.开发环境 [1]运行环境:win10 家庭版 [2]开发工具 ...
- ASP.NET Core 2.2 WebApi 系列【八】统一返回格式(返回值、模型验证、异常)
现阶段,基本上都是前后端分离项目,这样一来,就需要前后端配合,没有统一返回格式,那么对接起来会很麻烦,浪费时间.我们需要把所有接口及异常错误信息都返回一定的Json格式,有利于前端处理,从而提高了工作 ...
- ASP.NET Core 2.2 WebApi 系列【六】泛型仓储模式
为什么要使用泛型仓储?好处是? 前两章在autofac注入的时候,用的User类作为例子,写了增删改查四个接口,也就是仓储的GRUD. 当我们再添加一个实体(比如Student)时,StudentRe ...
- ASP.NET Core 2.2 WebApi 系列【五】MiniProfiler与Swagger集成
MiniProfiler 是一款性能分析的轻量级程序,可以基于action(request)记录每个阶段的耗时时长,还是可以显示访问数据库时的SQL(支持EF.EF Code First)等 一.安装 ...
- ASP.NET Core 2.2 WebApi 系列【四】集成Swagger
Swagger 是一款自动生成在线接口文档+功能测试功能软件 一.安装程序包 通过管理 NuGet 程序包安装,搜索Swashbuckle.AspNetCore 二.配置 Swagger 将 Swag ...
- ASP.NET Core 2.2 WebApi 系列【三】AutoFac 仓储接口的依赖注入
一.准备工作 通过程序包管理器控制台安装AutoFac: Install-Package Autofac.Extensions.DependencyInjection 创建新类库(.NetCore 2 ...
随机推荐
- 【Spring】只想用一篇文章记录@Value的使用,不想再找其它了(附思维导图)
1 简介 不得不说,Spring为大家提供许多开箱即用的功能,@Value就是一个极其常用的功能,它能将配置信息注入到bean中去.即使是一个简单的功能,Spring也提供了丰富的注入类型和形式.我经 ...
- 初学Swoole:PHP7安装Swoole的步骤
本篇文章给大家带来的内容是关于初学Swoole:PHP7安装Swoole的步骤,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 环境 这里不在使用apache做为web server. ...
- 去掉 Idea 中注入 Mapper 警告的方法
使用 Idea 的时候,自动装配 Mybatis 的 mapper.会一直出现红色波浪线的警告.看着难受.下面提供几种方式 方式一 为 @Autowired 注解设置required = false ...
- hadoop伪分布模式的配置和一些常用命令
大数据的发展历史 3V:volume.velocity.variety(结构化和非结构化数据).value(价值密度低) 大数据带来的技术挑战 存储容量不断增加 获取有价值的信息的难度:搜索.广告.推 ...
- Mysql相关知识总结-持续更新~~~
2019-12-11对varchar类型排序问题的解决 在mysql默认order by 只对数字与日期类型可以排序,但对于varchar字符型类型排序好像没有用了,下面我来给各位同学介绍varcha ...
- 精通awk系列(14):细说awk中的变量和变量赋值
回到: Linux系列文章 Shell系列文章 Awk系列文章 awk变量 awk的变量是动态变量,在使用时声明. 所以awk变量有3种状态: 未声明状态:称为untyped类型 引用过但未赋值状态: ...
- 让终端更好看--Ubuntu OhMyZsh配置指南
查看shell列表 cat /etc/shells 如果发现没有zsh就安装 安装zsh sudo apt install zsh 设置默认shell chsh -s $(which zsh) 重启主 ...
- 魔兽争霸RPG地图开发速成教程
魔兽争霸RPG地图开发速成教程 1 打开WE编辑器 下载地址 http://rpg.dz.blizzard.cn/authors-home/editor-download 然后新建地图 2 打开工 ...
- Linux 周期任务
一次性任务 在某个特定的时间,执行一次后被清除 相关命令/进程 at 命令 atd进程 在centos6中,系统服务的名称: /etc/init.d/atd 查看系统上该进程时候启动: [root@e ...
- MySQL去重保留最大的那条记录(取最新的记录)
以用户登录日志表为例,取用户最近登录的设备 1 SET NAMES utf8mb4; 2 ; 3 4 -- ---------------------------- 5 -- Table struct ...