Entity Framework Core系列教程-4 DbContext

2023-10-29

Entity Framework Core:DbContext

DbContext类是Entity Framework Core的组成部分。 DbContext实例代表与数据库的会话,可用于查询实体实例并将其保存到数据库。 DbContext是工作单元和存储库模式的组合。
EF Core中的DbContext允许我们执行以下任务:

  • 管理数据库连接
  • 配置模型和关系
  • 查询数据库
  • 将数据保存到数据库
  • 配置变更跟踪
  • 缓存
  • 事务管理

要在我们的应用程序中使用DbContext,我们需要创建从DbContext派生的类,也称为上下文类。该上下文类通常包括模型中每个实体的DbSet <TEntity>属性。以下为EF Core中DbContext类的示例。

public class SchoolContext : DbContext
{
    public SchoolContext()
    {
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
    }
    //实体
    public DbSet<Student> Students { get; set; }
    public DbSet<Course> Courses { get; set; }
} 

在上面的示例中,SchoolContext类派生自DbContext类,并且包含Student和Course类型的DbSet <TEntity>属性。它还将重写OnConfiguring和OnModelCreating方法。我们必须创建SchoolContext实例以连接到数据库并保存或检索学生或课程数据。
OnConfiguring()方法允许我们使用DbContextOptionsBuilder选择和配置要与上下文一起使用的数据源。在此处了解如何配置DbContext类。
OnModelCreating()方法允许我们使用ModelBuilder Fluent API配置模型。

DbContext方法

Method Usage
Add 将一个新实体添加到具有添加状态的DbContext中,并开始对其进行跟踪。调用SaveChanges()时,会将新的实体数据插入数据库。
AddAsync 用于向状态为“已添加”的DbContext添加新实体并开始对其进行跟踪的异步方法。调用SaveChangesAsync()时,会将新的实体数据插入数据库。
AddRange 将具有添加状态的新实体集合添加到DbContext并开始对其进行跟踪。调用SaveChanges()时,会将新的实体数据插入数据库。
AddRangeAsync 用于添加将保存在SaveChangesAsync()上的新实体集合的异步方法。
Attach 将新的或现有的实体附加到状态不变的DbContext并开始跟踪它。
AttachRange AttachRange将新实体或现有实体的集合以未更改的状态附加到DbContext并开始对其进行跟踪。
Entry 获取给定实体的EntityEntry。该条目提供对实体的更改跟踪信息和操作的访问。
Find 查找具有给定主键值的实体。
FindAsync 用于查找具有给定主键值的实体的异步方法。
Remove 移除将删除状态设置为指定的实体,当调用SaveChanges()时,该实体将删除数据。
RemoveRange 将Deleted状态设置为一组实体,这些实体将在调用SaveChanges()时在一次数据库往返中删除数据。
SaveChanges 对状态为“已添加”,“已修改”或“已删除”的实体执行INSERT,UPDATE或DELETE命令到数据库。
SaveChangesAsync SaveChanges()的异步方法
Set Set创建一个DbSet <TEntity>,可用于查询和保存TEntity的实例。
Update 附加状态为“已修改”的断开连接的实体,并开始对其进行跟踪。调用SaveChagnes()时将保存数据。
UpdateRange 附加状态为“已修改”的断开连接的实体的集合,并开始对其进行跟踪。调用SaveChagnes()时将保存数据。
OnConfiguring 重写此方法,以配置要用于此上下文的数据库(和其他选项)。创建的上下文的每个实例都会调用此方法。
OnModelCreating 重写此方法,以进一步配置根据约定从派生上下文的DbSet <TEntity>属性中公开的实体类型发现的模型。

DbContext属性

Model Usage
ChangeTracker 提供对该上下文正在跟踪的实体实例的信息和操作的访问。
Database 提供对此上下文的数据库相关信息和操作的访问。
Model 返回有关实体的形状,它们之间的关系以及它们如何映射到数据库的元数据。

在下一章中学习如何创建第一个简单的EF Core控制台应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Entity Framework Core系列教程-4 DbContext 的相关文章

  • 小程序路由跳转

    1 在小程序中路由跳转分为两种方式 声明式导航和编程式导航 路由导航就是我们在进行路由跳转的时候选择的方式 2 小程序中的声明式导航 概念 通过小程序提供的组件navigator 进行路由跳转 想要了解更多关于小程序navigator组件用
  • Setup&Hold互卡问题和Useful Skew的影响

    setup与hold timing互卡 conflict 现象的成因主要有哪些 如何解决 成因上来说 setup hold互卡主要有几种因素的影响 a 不同PVT条件下的cell delay variation较大 b 某些cell的lib
  • 小程序数据请求的方式和注意事项

    1 小程序中网络数据请求的限制 出于安全性方面的考虑 小程序官方对数据接口的请求做出了如下两个限制 只能请求HTTPS类型的接口 必须将接口的域名添加到信任列表中 2 配置request合法域名 假设要在自己的微信小程序中 希望请求某一域名
  • 怎么在网页或其他应用中打开你的app

    转载自 有改动 https segmentfault com a 1190000005967865 前言 对于一个完备的互联网产品而言需要有app端与web端两个不同前端 对于产品而言很多都希望能够将wap页上的用户引向native app
  • AndroidX设计架构MVVM之ViewModel生命周期分析

    本文基于ViewModel 2 1 0 先来一张ViewModel生命周期图 原文 AndroidX设计架构MVVM之ViewModel创建流程原理分析 AndroidX设计架构MVVM之ViewModel生命周期分析 AndroidX设计
  • ISCC SSTI

    先找参数吧 通过信息搜集 参数是xiaodouni 就是小豆泥的英文 这个是暹罗猫的一个名字吧 然后直接放两个payload的吧 看不懂的可以看一下我以前的文章CTFshow ssti里面讲了思路 这里就不再解释了 set pp dict

随机推荐

  • QT下配置Boost库

    QT下配置Boost库 前言 当使用别人的QT工程 复制到自己机器上 发现报如下错误 从QtCreator报错来看是找不到Boost相关文件和库 问题解决 首先去官网下载Boost库 编译boost库 下载boost源码 大家可以在boos
  • Ubuntu 18.04.6 单系统深度学习环境搭建(pytorch)

    1 系统安装 网上有很多这类教程 U盘制作 系统安装 2 显卡驱动安装 其他安装方法 ubuntu18 04安装显卡驱动 四种方式 我的安装方法 首先换清华源 选择一个附加驱动 然后应用更改 如果安装后重启黑屏 再尝试另外一个驱动 我是四个
  • R语言——方差分析

    一 方差分析的基本概念 方差分析是在20世纪20年代发展起来的一种统计方法 它是由英国统计学家费希尔在进行实验设计时为解释实验数据而首先引入的 从形式上看 方差分析是比较多个总体的均值是否相等 但是其本质上是研究变量之间的相互关系 方差分析
  • vue中使用echarts-liquidfill实现水球图

    先看效果图 echarts liquidfill查看官方文档 安装 npm install echarts save npm install echarts liquidfill save vue main js 中注册 import ec
  • postgresql从入门到菜鸟(十)initdb流程分析-环境设定

    分析完了参数解析 接下来分析环境设置 首先设定的是认证方式 static void check authmethod unspecified const char authmethod if authmethod NULL strlen a
  • 第三章网络传输介质

    一 信息 1 信号灯组成和类型 1 信号的组成 信息 定义数据类型 数据 描述事物的度量值 信号 信号时信息传输媒介 2 信息类型 数字信号 模拟信号 2 数字信号和模拟信号特点 1 数字信息 计算机通信使用 传输距离远 抗干扰能力强 通过
  • 如何定位CodeMirror插件

    CodeMirror插件不是普通的input textarea输入 无法使用selenium的input方法输入值 需要触发插件的事件才能真正实现值的更改 如何查看改插件有哪些事件 调用js触发setValue事件即可 document e
  • HDFS--读写测试

    读写测试 1 写测试 2 读测试 3 删除测试文件 1 写测试 cd export servers hadoop 2 6 0 cdh5 14 0 yarn jar share hadoop mapreduce hadoop mapreduc
  • 开发板BMP图片显示(6818开发板)

    BMP图片的前54个字节保存图片信息 不保存像素点 确认图片是不是BMP类型 读取整个图片大 pragma pack 1 typedef struct tagBITMAPFILEHEADER unsigned short bfType 2B
  • HR筛选简历内幕全解析

    我们已经把你的简历放进了公司的 人才库 在准备简历素材 挑选简历格式 着手创作简历的过程中 有一句话 可以用来作为戒条 Your resume is scanned not r ead YRIS 为什么让求职者以此为鉴呢 因为招聘者就是这样
  • 进程和线程的区别

    进程和线程的区别 1 进程和线程的关系和区别 2 线程的状态 3 进程的状态 4 多线程的实现方法 5 使用多线程的优缺点 6 线程的 run 和 start 有什么区别 7 什么是单线程和多线程 前两天面试 被问到进程和线程的区别 由于是
  • STM32F103 TFTLCD显示实验(一)

    文章内容 本文将介绍有关TFTLCD的有关知识 包括几个部分 分别如下 TFTLCD简介 相关指令 配置步骤 FSMC简介 由于篇幅过长 因此 代码讲解放到下一章中 链接如下 STM32F103 TFTLCD显示实验 二 https blo
  • 跑通官方的yolov7-tiny实验记录(yolov7-tiny可作为yolov5s的对比实验网络)

    目录 1 一些可用的参考链接 2 开始训练yolov7 2 1 weights 2 2 cfg 2 3 data 2 4 hyp 2 5 epochs 2 6 batch size 2 7 workers 2 8 name 1 一些可用的参
  • STM8中断的设置(ST Visual Develop和IAR环境下)

    以下以stm8s103为例介绍在ST Visual Develop和IAR环境下的中断设置 这两种只是环境不同其实中断向量是不会变的 先看一下数据手册 再结合芯片手册中中断向量映像表 如下图所示 结合起来的话我们就能够理解的 在用ST Vi
  • this.setState的详细用法

    1 为什么不要直接对state进行赋值 如果直接对this state复制是不会去更新视图的 this setState的原理是同一个队列来实现state的更新的 将需要更新的state放入到状态队列中 在一定时间段之后 合并并更新stat
  • 【计算机网络】网络层协议——IP协议基础教程详解!干货满满

    文章目录 计算机网络 网络层 IP协议详解 IP协议的格式 4位版本号 4位首部长度 8位的服务类型 16位总长度 分包组包 标识 片移量 标志 过程实例 8位生存时间 8位协议 16位首部校验和 源IP地址和目的IP地址 IP地址管理 网
  • django channels实战(websocket底层原理和案例)

    1 websocket相关 1 1 轮询 1 2 长轮询 1 3 websocket 1 3 1 websocket原理 1 3 2 django框架 asgi py在django项目同名app目录下 1 3 3 聊天室 django代码总
  • 法线向量扰动、副法线

    3D数学 学习笔记 9 凹凸映射 bump mapping 和切线空间 tangent space 凹凸映射和切线空间在图形学中也是用的较多的 下面给大家介绍下凹凸映射和切线空间 并和大家说下凹凸映射和切线空间的区别和优缺点 凹凸映射 bu
  • 深圳益百分稳健前行 在商业创新中寻找平衡点

    文 李永华 来源 螳螂财经 ID TanglangFin 遭遇舆论危机后 滴滴创始人之一柳青曾在微博上晒出程维的照片 并配文 一个在两周内瘦成一道闪电的男人 程维快速变瘦的背后是一个高速发展的巨头级企业面临巨大监管和舆论压力的写照 一边是庞
  • Entity Framework Core系列教程-4 DbContext

    Entity Framework Core DbContext DbContext类是Entity Framework Core的组成部分 DbContext实例代表与数据库的会话 可用于查询实体实例并将其保存到数据库 DbContext是