C# 实例化从EF DbContext派生的类时会发生什么?

C# 实例化从EF DbContext派生的类时会发生什么?,c#,entity-framework,C#,Entity Framework,TL;博士 当我实例化扩展EF DbContext的类的实例时,您能总结一下发生了什么吗 长 我想尽可能多地了解它,但由于对接口和抽象类的各种引用,仅阅读源代码并不是很有成效 我希望通过循序渐进,我能够更容易地确定我在处理的是哪一部分 我想与该项目作出贡献,我想有一个良好的了解一切 那么,你能描述一下当我实例化一个像下面这样的类时会发生什么吗 public class ProductContext : DbContext { public DbSet<Category> Ca

TL;博士
当我实例化扩展EF DbContext的类的实例时,您能总结一下发生了什么吗


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

我希望通过循序渐进,我能够更容易地确定我在处理的是哪一部分

我想与该项目作出贡献,我想有一个良好的了解一切

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

public class ProductContext : DbContext
{
    public DbSet<Category> Categories { get; set; }
    public DbSet<Product> Products { get; set; }
}
公共类ProductContext:DbContext
{
公共数据库集类别{get;set;}
公共数据库集产品{get;set;}
}
编辑1
让我举例说明我正在寻找的答案,例如“启动汽车”:
首先,将钥匙插入插座。转动钥匙实际上是一个三步动作。当你稍微转动一下,确认钥匙与锁匹配并由内部电池供电时,汽车会启动电气系统,计算汽油量,关闭外部灯,如刹车灯和前照灯,关闭空调,并恢复内部电动发动机的所有电源,从而启动主发动机。
如果你再转动一点,同步系统将与气泵和电动发动机一起启动,导致曲轴旋转并使活塞运动,这是常规操作的反向模式。如果任何档位被“设置”,汽车将移动,主机启动将失败。如果没有,气泵将在活塞室中喷射气体,同步系统将产生火花,探测气体并启动主机。在此之后,电动发动机将停止,变压器将开始工作,为主蓄电池补充电量。
如果同步系统和气泵继续正常工作,活塞中的点火将继续以4个循环的方式进行,汽车将准备好驾驶。如果没有,汽车将死亡,整个过程可以重复


现在请注意,虽然“完整”和“技术”各点未注明,例如机油、水冷、发动机的机械内部构件、齿轮箱和其他。。。但如果你有能力做到这一点,请做到

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

一些有用的链接:

  • 类似的问题和答案等等
  • 是指向该类的链接
  • 是指向实体框架的源代码的链接

这很有帮助,但还不够深入,因为我需要。。。或者至少,希望…@Leonardo有什么具体的我可以回答的吗?有权访问源代码意味着你可以深入到你想要的地方。正如我在长版本中提到的,代码不容易阅读和理解。。。找出代码背后的“意图”并非易事,即使您熟悉该项目。。。我编辑了我的帖子。。。过来看