摘要
软件开发必备ORM,但需掌握管理机制和协助类。现在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包并建立前后文目标
这儿只必须 2个包,一个是EFCore的引入包,一个是连接数据库的引入包。
在NuGet各自引进下边2个包,
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); } } } }
随后大家浏览http://localhost:44571/api/Student/GetStudentList 就查看到数据信息了,取得成功互动 ,调节查询一下。
到这儿就完成了数据库查询互动了,是否超少的编码,超简单的逻辑性。别的的删改改一样的,大家展现一下增加的事例,改动删掉的也不展现了,必须 实际掌握的能够 私聊或发表评论留言板留言。
//提升 [HttpGet("StudentInsert")] public string StudentInsert() { using (var ctx = new DbContext_first()) { int count = 0; List<StudentTable> modelList = new List<StudentTable>(); StudentTable model = new StudentTable(); model.Name = "喜羊羊"; model.Sex = "男"; model.Age = 10; model.ClassName = "创造发明三班"; model.CreateTime = DateTime.Now; ctx.Add(model); //单独加上 count = ctx.SaveChanges(); //递交数据库查询互动 //modelList.Add(model); //ctx.AddRange(model); //大批量加上 //count = ctx.SaveChanges(); //递交数据库查询互动 return count > 0 ? "加上取得成功" : "加上不成功"; } }
汇总
连接进去非常简单,应用也很便捷,可是针对繁杂sql语句(跨网络服务器跨库多表的查看)或别的业务场景不符合该怎么办?
这个时候便会考虑到应用sql语句的方法是否会比较好,启用sql语句是否更优质?在没有引进第三方的状况下能够 应用ado.net的方法来开展补位,例如:
//sql联接
string connectionString = "Data Source=DESKTOP-Q1V1K53\\MSSQLSERVER2012; Initial Catalog=Demo;User Id=sa;Password=0000@CIICSH"using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); string sql = ""; sql = "INSERT INTO StudentTable VALUES('灰太狼','男','20','创造发明三班',GETDATE())"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.ExecuteNonQuery(); } conn.Close(); conn.Dispose(); }
热烈欢迎关心定阅微信公众平台【熊泽有话说】,大量好玩儿易懂专业知识等着你取
创作者:熊泽-学习中的苦与乐 微信公众号:熊泽有话说 来源:https://www.cnblogs.com/xiongze520/p/15049031.html 写作不容易,所有人或团队、组织所有转截或是一部分转截、摘抄,请在文章内容显著部位标明创作者和全文连接。
|
关注不迷路
扫码下方二维码,关注宇凡盒子公众号,免费获取最新技术内幕!
评论0