簡體   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