浏览器标题切换
浏览器标题切换end

Intern Day10 - 如何在ASP.Net Core中使用EF中的DbContext

DbContext

DbContext是数据库和领域模型之间的桥梁。使用它可以查询数据到你的 entitys 集合中,也可以通过它将 entitys 保存到底层数据库中, EF Core 中的 DbContext 拥有的模块:连接管理、查询数据、持久化数据、修改跟踪、缓存、事务管理,具体见:https://www.cnblogs.com/OFSHK/p/14441635.html

使用步骤

  1. 安装EF,通过Alter+Enter即可。

  2. 创建 DbContext:创建一个PatientDbContext.cs,并继承EF中的基类DbContext

using Microsoft.EntityFrameworkCore;

namespace Demo_One
{
    // 连接DbContext,而不是创建
    //该cs文件的目的:通过DbContext去连接数据库
    //该类主要用于对 DbContext 做一些必要的参数配置
    public class PatientDbContext:DbContext
    {
        public PatientDbContext(DbContextOptions<PatientDbContext> option) : base(option) // 记住
        {
        }
        
        // 新增几个DbSet<TEntity>属性用来表示实体集合 DbSet表示可用于增删改查操作的实体集  
        public DbSet<Patient>Patients { get; set; } // DbContext中每一个表加一个DbSet
    }
}
  1. 注册 DbContext 注入到 ASP.NET Core 运行时:添加代码到Startup.cs的ConfigureServices方法下。
        public void ConfigureServices(IServiceCollection services)
        {
            //注册 DbContext 注入到ASP.NET Core运行时。
            // 要想在 ASP.NET Core 中使用,要将PatientDbContext注入到ServiceCollection容器中
            // 这里用pgsql作为底层存储,安装途径:先去EF官方文档上找到pqsql对应的NuGet程序包再进行安装
            //是Npgsql.EntityFrameworkCore.PostgreSQL,而不是Npgsql
            // 记住
            services.AddDbContext<PatientDbContext>(opt => opt.UseNpgsql(Configuration["ConnectionStrings:aliyun_pgsql"]));

           
            services.AddControllers();
            services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo {Title = "Demo_One", Version = "v1"}); });
        }
  1. DbContext 依赖注入:现在PatientDbContext已经注入到容器了,然后我们新建一个PatientController.cs,就可以在PatientController中通过依赖注入的方式获取PatientDbContext实例实例
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Mvc;

namespace Demo_One.Controllers
{
    // DbContext依赖注入
    // 在Startup中,PatientDbContext已经注入到容器了
    // 所以现在在PatientController中,通过依赖注入的方式去获取PatientDbContext实例
    // 通过构造函数注入
    
    //  MVC或者API的应用,当你在控制器中这么写的时候,
    // .NET Core会自动把你已注册的服务给注入进来,不需要你再去实例化了new
    
    [ApiController]
   // [Route("[Controller]")]
    [Route("api/patient")]
    public class PatientController:ControllerBase
    {
        
        private readonly PatientDbContext _patientDbContext;
        public PatientController(PatientDbContext patientDbContext) // 构造函数注入
        {
            _patientDbContext = patientDbContext;
        }
    ······
    ······
posted @   抓水母的派大星  阅读(406)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
历史上的今天:
2020-02-27 寒假Day35:HDU3499
2020-02-27 寒假Day35:HDU1385-Minimum Transport Cost -Floyd路径输出(输出字典序小的)
点击右上角即可分享
微信分享提示