2021年7月29日星期四

10分钟系列:NetCore3.1+EFCore三步快速完成数据库交互

前言

做程序开发,不管是什么语言什么数据库,其中的ORM(对象关系映射)是必不可少的,但是不管选择哪一种ORM,都需要了解其中的运行机制,配置帮助类等等。

所以很多ORM都开始进行升级封装,我们只需要引用即可,可谓是开箱即用,特别是对于初学者来说,快速建站不是梦。

PS:知其然而不知其所以然是不行的,要理解其中的运行机制和原理,不要为了写代码而写代码。

今天他来了,EFCore (Entity FraFramework Core)

Entity Framework Core (EF Core) 是适用于 .NET 的新式对象数据库映射器。 它支持 LINQ 查询、更改跟踪、更新和架构迁移。

EF Core 通过数据库提供程序插件模型与 SQL Server/Azure SQL 数据库、SQLite、Azure Cosmos DB、MySQL、PostgreSQL 和更多数据库配合使用。

三步实现数据库交互

1、创建项目

创建一个 ASP .Net Core Web API 项目,命名为 EFCore_NetCoreWebApi (自定义命名,你可以起一个合适的名字),版本选择 Net  Core 3.1,

数据库是 SqlServer,当然,其他数据库也是可以的,不影响操作,很方便。

2、引入NuGet包并创建上下文对象

这里只需要两个包,一个是EFCore的引用包,一个是数据库连接的引用包。

在NuGet分别引入下面两个包,

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.SqlServer

创建上下文对象

在项目里面创建一个 EntityDbContext 文件夹,然后在文件夹里面创建一个 DbContext_first 类,并继承 EFCore框架中的 DbContext,

在  EntityDbContext 文件夹下创建 Entity 文件夹,创建 StudentTable 实体映射。如下展示

PS:(注意,这里默认是数据库存在StudentTable表的,如果没有请先创建,EFCore支持实体映射表到数据库的,这里就不体现了,有需要了解的自行百度或私信小编)

using EFCore_NetCoreWebApi.EntityDbContext.Entity;using Microsoft.EntityFrameworkCore;using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;namespace EFCore_NetCoreWebApi.EntityDbContext{ public class DbContext_first: DbContext {  /// <summary>  /// 在这里重写OnConfiguring的方法来配置数据库的连接字符串  /// </summary>  /// <param name="optionsBuilder"></param>  protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)  {   //SQL Server/Azure SQL 数据库、SQLite、Azure Cosmos DB、MySQL、PostgreSQL数据库连接   optionsBuilder.UseSqlServer("Data Source=DESKTOP-Q1V1K53\\MSSQLSERVER2012; Initial Catalog=Demo;User Id=sa;Password=0000@CIICSH");  }  public DbSet<StudentTable> StudentTable{ get; set; } //需要操作的数据库对应的表 }}

为了很好的展示,配置连接我写在代码里,后续可放到配置文件,注意,NetCore3.1的配置文件读取方式和以往不同,注意甄别,如下,需要查看的点击代码,不需要的可以跳过。

1、首先在控制器引入读配置文件对象private readonly IConfiguration _IConfiguration;public ThirdController(IConfiguration IConfiguration){ _IConfiguration = IConfiguration;} 2、然后读取var AllowedHosts = this._IConfiguration["AllowedHosts"];var write = this._IConfiguration["ConnectionStrings:DbWrite"];var write0 = this._IConfiguration["ConnectionStrings:DbWrite:0"];var readarray = this._IConfiguration.GetSection("ConnectionStrings").GetSection("DbReads").GetChildren().Select(a => a.Value).ToArray();3、配置文件的格式(看需求配置){ "Logging": { "LogLevel": {  "Default": "Information",  "Microsoft": "Warning",  "Microsoft.Hosting.Lifetime": "Information" } }, "ConnectionStrings": { "DbWrite": "Server=.;Database=LhHt6;Persist Security Info=True;User ID=sa;password=Sasa123;MultipleActiveResultSets=true", "DbReads": [  "Server=.;Database=LhHt6;Persist Security Info=True;User ID=sa;password=Sasa123;MultipleActiveResultSets=true",  "Server=.;Database=LhHt6;Persist Security Info=True;User ID=sa;password=Sasa123;MultipleActiveResultSets=true",  "Server=.;Database=LhHt6;Persist Security Info=True;User ID=sa;password=Sasa123;MultipleActiveResultSets=true" ] }, "AllowedHosts": "*" }

View Code

展示一下创建好后的目录层级

3、编写几行代码

在 Controllers 文件夹下创建一个 StudentController 控制器,并配置路由,编写代码,如下:

using EFCore_NetCoreWebApi.EntityDbContext;using Microsoft.AspNetCore.Mvc;using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;namespace EFCore_NetCoreWebApi.Controllers{ [Route("api/[controller]")] [ApiController] public class StudentController : Controller {  //查询  [HttpGet("GetStudentList")]  public JsonResult GetStudentList()  {   using (var ctx=new DbContext_first())   {    var studeltList = ctx.StudentTable.ToList();    return Json(studeltList);   }  } }}

然后我们访问成功交互 ,调试查看一下。

到这里就完成了数据库交互了,是不是超少的代码,超简单的逻辑。其他的增删改一样的,我们展示一下新增的例子,修改删除的就不展示了,需要具体了解的可以私信或评论区留言。

  //增加  [HttpGet("StudentInsert")]  public string StudentInsert()  {   using (var ctx =......

原文转载:http://www.shaoqun.com/a/892252.html

跨境电商:https://www.ikjzd.com/

笨鸟:https://www.ikjzd.com/w/2713

usps:https://www.ikjzd.com/w/513

002315焦点科技:https://www.ikjzd.com/w/1831


前言做程序开发,不管是什么语言什么数据库,其中的ORM(对象关系映射)是必不可少的,但是不管选择哪一种ORM,都需要了解其中的运行机制,配置帮助类等等。所以很多ORM都开始进行升级封装,我们只需要引用即可,可谓是开箱即用,特别是对于初学者来说,快速建站不是梦。PS:知其然而不知其所以然是不行的,要理解其中的运行机制和原理,不要为了写代码而写代码。今天他来了,EFCore(EntityFraFram
四川省旅游景区有序开放:http://www.30bags.com/a/426350.html
四川省旅游局赴渝洽商川渝合作事宜 :http://www.30bags.com/a/409474.html
四川省旅游协会近日公布旅游成本价防欺骗:http://www.30bags.com/a/428996.html
四川省推出"十条"措施缓解经营困难提振发展信心:http://www.30bags.com/a/434245.html
老公洗澡老婆被上王总 当着老公被他上司干:http://lady.shaoqun.com/a/274803.html
车上用裙子挡着做h 车子颠簸一下猛地进去:http://lady.shaoqun.com/m/a/247951.html
女人口述被亲下面的感觉 他的舌头弄得我好舒服:http://lady.shaoqun.com/m/a/247530.html
粗大从后面狠狠挺进 水中欢爱猛烈撞击:http://lady.shaoqun.com/m/a/248412.html
招生在高校旁边开酒店的推广方式有争议:http://lady.shaoqun.com/a/428527.html
为什么大学附近有那么多小旅馆?大学生不都住校园吗?:http://lady.shaoqun.com/a/428528.html
大学周边的酒店往往供不应求。他们在里面做什么?你有过难忘的经历吗?:http://lady.shaoqun.com/a/428529.html
女人给你这四个暗示是因为想和你发生关系!:http://lady.shaoqun.com/a/428530.html

没有评论:

发表评论