Intern Day10 - 如何在ASP.Net Core中使用EF中的DbContext
DbContext
DbContext是数据库和领域模型之间的桥梁。使用它可以查询数据到你的 entitys 集合中,也可以通过它将 entitys 保存到底层数据库中, EF Core 中的 DbContext 拥有的模块:连接管理、查询数据、持久化数据、修改跟踪、缓存、事务管理,具体见:https://www.cnblogs.com/OFSHK/p/14441635.html
使用步骤
-
安装EF,通过Alter+Enter即可。
-
创建 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
}
}
- 注册 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"}); });
}
- 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;
}
······
······
分类:
.NET后端开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.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路径输出(输出字典序小的)