Intern Day78 - EF Core中的DbContext和DbSet的理解
个人理解
本人的理解就是:DbContext是C#用来连接数据库的,基于DbContext,我们可以不用对数据库本身进行操作,只需要在C#的编译环境里面直接操作数据库就行了。然后DbSet是我们用到多少个数据表就在C#的编译环境中新建多少个DbSet。DbSet与DbContext是多对一的关系。
简单介绍
首先DbContext和DbSet是属于EF Core下的内容,EF Core是属于ORM(对象关系映射)框架的一种,
作用是:开发者只需操作.NET对象,不需要关注数据库的各种Sql语句,通过对OMR的操作,达到对数据库数据的增删改查的相关操作。
(关于ORM的优缺点,可以参考:https://www.cnblogs.com/OFSHK/p/14519472.html)
DbContext类
是域/实体类与数据库之间的桥梁。(可以和数据库通信,管理实体到数据库的映射模型,跟踪实体的更改。)
通过DbContext去连接数据库(和数据库通信),DbContext封装与数据库和数据模型相关的功能(管理实体到数据库的映射模型),依据数据实体状态创建SQL命令,将数据更改保存到数据库中(跟踪实体的更改)。
DbContext 表示与数据库的一次会话,EF Core中增删改查操作都基于该类。
一般情况下,需要创建继承于 DbContext 的自定义类,然后通过该类进行数据库操作。 在实际开发项目中DbContext会结合Repository模式和Unit Of Work模式。
DbSet
用于增删改查操作的实体集 。DbSet是实体对象的集合,提供了实现CRUD的相应方法。
public DbSet<Patient>Patients { get; set; } // DbContext中每一个表加一个DbSet
// 新增几个DbSet<TEntity>属性用来表示实体集合