以连接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. According to TLD or attribute directive in tag file, attribute items does not accept any expressions

    <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>报错 <%@ tagl ...

  2. 太厉害了,终于有人能把TCP/IP协议讲的明明白白了!

    从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议.实际生活当中有时也确实就是指这两种协议.然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称.具体来说 ...

  3. dubbo、zookeeper心跳相关参数解析与测试

    dubbo consumer和provider的心跳机制 dubbo客户端和dubbo服务端之间存在心跳,目的是维持provider和consumer之间的长连接.由dubbo客户端主动发起,可参见d ...

  4. pandas filter数据筛选

    https://study.163.com/course/courseMain.htm?courseId=1006383008&share=2&shareId=400000000398 ...

  5. Vintage、滚动率、迁移率的应用

    python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...

  6. Uni-app 使用总结

    1.去掉顶部导航 在page.json中添加 "globalStyle" : { "navigationBarTextStyle" : "black& ...

  7. python路径相关技巧

    在文件C:\work\python\rqalpha\rqalpha\utils\config.py 找文件:C:\work\python\rqalpha\rqalpha\config.yml 则通过下 ...

  8. django安装使用xadmin

    Xadmin介绍 直接替换掉Django自带的admin系统,并提供了很多有用的东西:完全的可扩展的插件支持,基于Twitter Bootstrap的漂亮UI. 完全替代Django admin 支持 ...

  9. C#程序打包安装部署之添加注册表项(转)

    今天为大家整理了一些怎样去做程序安装包的具体文档,这些文档并不能确保每个人在做安装包的时候都能正确去生成和运行,但是这些文档的指导作用对于需要的朋友来说还是很有必要的,在实际产品的安装部署过程中可能有 ...

  10. 通过ssh登录到手机 Termux

    安装Termux Termux官网:https://termux.com/ 安装openssh 安装好Termux后,点击图标进入,依次输入以下命令. 申请读写权限 termux-setup-stor ...