以连接mysql数据库为例

一 安装组件

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.Relational

Microsoft.EntityFrameworkCore.Tools

MySqlConnector

Pomelo.EntityFrameworkCore.MySql

二 新增MySQLDbContext,继承自DbContext,并新增一个数据库表实体Article

  [Table("Articles")]
public class Article
{
/// <summary>
/// 主键id
/// </summary>
[Key]
public string Id { get; set; } /// <summary>
/// 标题
/// </summary>
public string Title { get; set; } /// <summary>
/// 内容
/// </summary>
[MaxLength(255)]
public string Content { get; set; } /// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedDT { get; set; } /// <summary>
/// 修改时间
/// </summary>
public DateTime ModifiedDT { get; set; }
} public class MySQLDbContext : DbContext
{
public MySQLDbContext(DbContextOptions<MySQLDbContext> options) : base(options) { } public DbSet<Article> ArticleSets { get; set; } //...
}

  

三 appsettings配置数据库连接字符串,并在Startup.cs中添加服务

Startup.cs:

services.AddDbContext<MySQLDbContext>(options => options.UseMySql(Configuration.GetConnectionString("MySQL")));

 注:字符串连接名称"MySQL"与appsettings中配置的名称对应.

四 code first方式创建数据库

1.程序包管理控制台PM命令

 remove-migrations
add-migrations my-gration
update-database

2.donet命令行

 dotnet ef migrations remove
dotnet ef migrations add my-gration
dotnet ef database update

3.代码内执行创建数据库的代码(EnsureCreated)

新增DbContextExtension扩展类EnsureCreatedDB扩展方法:

 public static IWebHost EnsureCreatedDB<TContext>(this IWebHost host) where TContext : DbContext
{
using (var scope = host.Services.CreateScope())
{
  var context = scope.ServiceProvider.GetService<TContext>();
  context.Database.EnsureCreated();
}
return host;
}

在Program.cs中调用该扩展方法:

 public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build()
.EnsureCreatedDB<MySQLDbContext>() //调用扩展方法
.Run();
}

五 使用EF进行增删改查

     [ApiController]
[Route("api-hd/article")]
public class ArticleController : ControllerBase
{
private MySQLDbContext _dbContext; public ArticleController(MySQLDbContext dbContext)
{
_dbContext = dbContext;
} /// <summary>
/// 新增文章
/// </summary>
/// <param name="title"></param>
/// <param name="content"></param>
/// <returns></returns>
[AllowAnonymous]
[HttpPost]
[Route("")]
public async Task<bool> Add(string title, string content)
{
var newArticle = new Article()
{
Id = Guid.NewGuid().ToString(),
Title = title,
Content = content,
CreatedDT = DateTime.Now,
ModifiedDT = DateTime.Now,
};
await _dbContext.AddAsync(newArticle);
await _dbContext.SaveChangesAsync();
return true;
} /// <summary>
/// 根据id查询文章
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[AllowAnonymous]
[HttpGet]
[Route("{id}")]
public async Task<Article> GetById(string id)
{
var data = await _dbContext.ArticleSets.FindAsync(id);
return data;
} /// <summary>
/// 更新文章标题
/// </summary>
/// <param name="id"></param>
/// <param name="title"></param>
/// <returns></returns>
[AllowAnonymous]
[HttpPut]
[Route("")]
public async Task<bool> Update(string id, string title)
{
var existArticle = await _dbContext.ArticleSets.FindAsync(id);
if (existArticle == null)
{
return false;
} existArticle.Title = title;
//_dbContext.Update(existArticle);
await _dbContext.SaveChangesAsync();
return true;
} /// <summary>
/// 根据id删除文章
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[AllowAnonymous]
[HttpDelete]
[Route("{id}")]
public async Task<bool> Delete(string id)
{
var existArticle = await _dbContext.ArticleSets.FindAsync(id);
if (existArticle == null)
{
return false;
} _dbContext.Remove(existArticle);
await _dbContext.SaveChangesAsync();
return true;
} }

asp.net core EF code first的更多相关文章

  1. C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现之方法二:加入缓存机制

    在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Cachi ...

  2. asp.net core+ef core

    asp.net core+ef core 官方的文档https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html 先来看一 ...

  3. ASP.Net Core的Code Fist代码先行操作方法

    Asp.Net  core的Code Fist(代码先行)主要有以下几步: 1.创建实体类 2.创建数据库上下文 3.填加连接字符串 4.依赖注入 5.添加基架工具并执行初始迁移 6搭建模型的基本架构 ...

  4. Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本)

    Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本) 原创 2016年07月22日 10:33:51 23125 6月随着.NET COR ...

  5. C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现

    今天做一个管理后台菜单,想着要用无限极分类,记得园子里还是什么地方见过这种写法,可今天找了半天也没找到,没办法静下心来自己写了: 首先创建节点类(我给它取名:AdminUserTree): /// & ...

  6. IoC容器Autofac - Autofac + Asp.net MVC + EF Code First(转载)

    转载地址:http://www.cnblogs.com/JustRun1983/archive/2013/03/28/2981645.html  有修改 Autofac通过Controller默认构造 ...

  7. ASP.NET Core&EF 笔记

    首先创建Asp.net Core项目,然后通过 NuGet 安装 EntityFrameworkCore: Microsoft.EntityFrameworkCore.SqlServer Micros ...

  8. (17)ASP.NET Core EF基于数据模型创建数据库

    1.简介 使用Entity Framework Core构建执行基本数据访问的ASP.NET Core MVC应用程序.使用迁移(Migrations)基于数据模型创建数据库,你可以在Windows上 ...

  9. ASp.net Core EF ActionFilterAttribute AOP

    在项目中经常遇到一些数据的修改,很多时候业务方需要一个修改日志记录,这里我们计划用mssql数据库来存放日志记录,用EF来操作,记录日志可以用mvc的ActionFilterAttribute 来完成 ...

随机推荐

  1. Redis 下载 安装

    Redis 官网 https://redis.io/ github 主页 https://github.com/antirez/redis 下载页面 https://redis.io/download ...

  2. ICEM-实验环

    原视频下载地址:https://pan.baidu.com/s/1eSbxiO6 密码: 7114

  3. 20189220 余超《Linux内核原理与分析》第三周作业

    操作系统如何工作的 第二章的基础知识 计算机的三大法宝:存储程序计算机,函数调用堆栈机制,中断. 堆栈:堆栈是C语言程序运行时必须使用的几率函数条用路径和参数存储的空间,具体作用分为:记录函数条用的框 ...

  4. 使用CAS实现单点登录功能

    目录 单点登录 简介 CAS服务器部署 上传tomcat服务器压缩到文件夹/usr/local/cas目录下,解压,修改tomcat文件夹名为tomcat 修改tomcat配置文件的端口号 关闭tom ...

  5. 第10组 Alpha冲刺(5/6)

    链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 学习调用中国天气网API,接近实现天气推送功能 对天气推送的形式进行讨论及重确 ...

  6. 必须要注意的 C++ 动态内存资源管理(二)——指针对象简单实现

    必须要注意的 C++动态内存资源管理(二)——指针对象简单实现 四.拷贝类型的资源         上节我们说过,对于图片类型的资源我们有时候往往采用拷贝(如果对于那种公共图片,可能采用唯一副本,提供 ...

  7. VS Code中配置python版本以及Python多版本

    VS Code中配置python版本VS Code十分方便配置python的版本:可以选在在本地setting.json或者全局setting.json文件中配置:python.pythonPath在 ...

  8. python web开发——django学习(二)第一个django网站运行成功

    1.写message_form.html <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  9. Samba通过ad域进行认证并限制空间大小

    最近正在做单位电脑的AD域管理. 为漫游用户文件,研究配置Samba通过ad域进行认证并限制空间大小. 参考了很多资料,现总结如下: DC:windows server 2016(配置安装域控制器)略 ...

  10. Appium查询元素方法

    Appium查询元素有两种方式 一种是使用UI Automator: 参考 https://www.cnblogs.com/gongxr/p/10906736.html 另一种是使用appium的In ...