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

时间:2015-12-10 17:01:38

标签: c# entity-framework

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


我想尽可能多地学习它,只是因为对接口和抽象类的各种引用而只阅读源代码的效率不高......

我希望通过一步一步,我能够更容易地确定哪个部分正在处理......

我想为这个项目做出贡献,我想对所有事情有充分的了解......

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

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

编辑1
让我举例说明我正在寻找的答案,例如,&#34;开车&#34;:
首先,将密钥插入套接字。转动钥匙实际上是一个3步骤的动作。当你稍微转动一下,验证钥匙是否适合锁并由内部电池供电时,汽车启动电气系统,计算燃气量,关闭外部灯,如刹车灯和前大灯,关闭空调并恢复内部电动机的所有动力,这将转动主发动机。
如果再多转一下,同步系统会在气泵和电动发动机旁启动,导致曲轴旋转并使活塞运动,这是常规操作的反向模式。如果有任何齿轮设置&#34;汽车将移动,主发动机启动将失败。如果没有,气泵将在活塞腔内喷射气体,同步系统将产生火花,探测气体,并启动主发动机。之后电动发动机将停止运转,变压器将进入补充主电池的状态 如果同步系统和气泵继续完美运行,活塞中的点火将继续以4循环方式发生,并且汽车将准备好开车。如果不是,汽车将会死亡,整个过程可以重复。

现在请注意,尽管&#34;完成&#34;和&#34;技术&#34;没有注意到各点,例如油,水冷,发动机的机械内部,齿轮箱等......但是如果你有能力这样做PLS就可以做到!

1 个答案:

答案 0 :(得分:1)

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

一些有用的链接:

  • 关于SO here的类似问答。
  • Here是该DbSetDiscoveryService课程的链接。
  • Here是实体框架源代码的链接。