当我实例化一个从EF DbContext派生的类时会发生什么

本文关键字:派生 什么 DbContext EF 实例化 一个 | 更新日期: 2023-09-27 18:26:23

TL;DR
你能总结一下当我实例化一个扩展EF DbContext的类实例时会发生什么吗???


我想尽可能多地了解它,但由于对接口和抽象类的各种引用,仅仅阅读源代码并不是很有成效。。。

我希望通过一步一步的学习,我能够更容易地识别正在处理的部分。。。

我想为这个项目做出贡献,我想对一切都有一个良好的理解。。。

那么,你能描述一下当我实例化一个类时会发生什么吗

public class ProductContext : DbContext
{
    public DbSet<Category> Categories { get; set; }
    public DbSet<Product> Products { get; set; }
}

编辑1
让我举例说明我正在寻找的答案,以"启动汽车"为例:
首先你把钥匙插入插座。转动钥匙实际上是一个3步的动作。当你稍微转动一点,确认钥匙是否适合锁并由内部电池供电时,汽车会启动电气系统,计算汽油量,关闭刹车灯和前照灯等外部灯,关闭空调,并恢复内部电动发动机的所有电源,从而转动主发动机
如果你再转动一点,同步系统就会与气泵和电动发动机一起启动,导致曲轴旋转并使活塞运动,这是常规操作的相反模式。如果"设置"了任何档位,汽车就会移动,主发动机将无法启动。如果没有,气泵将在活塞室内喷射气体,同步系统将产生火花,探测气体并启动主发动机。之后,电动发动机将停止,变压器将开始为主电池充电
如果同步系统和气泵继续完美工作,活塞中的点火将继续以4个循环的方式发生,汽车将做好驾驶准备。如果没有,汽车就会死亡,整个过程可以重复。

现在请注意,尽管没有注意到"完整"answers"技术"的各个方面,如机油、水冷、发动机的机械内部、齿轮箱和其他。。。但如果你有能力,请去做!

当我实例化一个从EF DbContext派生的类时会发生什么

我真的不确定你在寻找什么,但这些信息可能会有所帮助。当实例化DbContext类时,构造函数会调用一个初始化DbSet属性的私有方法。它使用一个名为DbSetDiscoveryService的内部类来通过反射发现当前类中的DbSet属性。

一些有用的链接:

  • 这里有一个关于SO的类似问答
  • 这里有一个指向DbSetDiscoveryService类的链接
  • 这里有一个指向实体框架源代码的链接
相关文章: