繁体   English   中英

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

[英]What happens when i instantiate a class derived from EF DbContext?

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


我想学习尽可能多的知识,由于对接口和抽象类的各种引用,仅阅读源代码的效率不是很高。

我希望一步一步来,我将能够更轻松地确定正在处理的部分...

我想为这个项目做贡献,并且我想对所有事情都有一个很好的了解。

那么,您能描述一下我实例化诸如此类的类时发生的情况吗?:

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

编辑1
让我以“启动汽车”为例,举例说明我正在寻找的答案:
首先,将钥匙插入插座。 转动钥匙实际上是3个步骤。 稍稍转动一下即可验证钥匙是否适合门锁并由内部电池供电,汽车将启动电气系统,核算汽油量,关闭外部照明灯(如断电灯和前照灯),并关闭空调并转换一台内部电动引擎的所有动力,这将使主机转动。
如果再转动一点,同步系统将与气泵和电动发动机一起启动,导致曲轴旋转并使活塞运动,这是常规操作的反向模式。 如果“设置”了任何档位,汽车将行驶,并且主机启动将失败。 如果不是,则气泵将在活塞腔中喷射气体,同步系统将产生火花,探测气体并启动主机。 此后,电动机将停止,变压器将开始工作以补充主电池。
如果同步系统和气泵继续正常运行,则活塞中的点火将继续以4循环方式发生,汽车将准备好行驶。 如果不是这样,汽车将死,整个过程可以重复。

现在请注意,尽管没有提到“完整”和“技术”方面的各个方面,例如机油,水冷,发动机的机械内部,齿轮箱等...但是如果您有能力,PLS可以做到这一点!

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

一些有用的链接:

  • 类似的问题和答案的SO 这里
  • 是该DbSetDiscoveryService类的链接。
  • 是到实体框架源代码的链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM