序言

做软件开发,无论是什么语言哪些数据库查询,在其中的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条)

刀客源码 游客评论