DbContext.OnConfiguration在Asp.net核心中沒有被調用並且表現得很奇怪

asp.net-core asp.net-mvc entity-framework-core

在我的asp.net核心項目中,我有一個從DbContext派生的ReadingContext類。根據文件OnConfiguring應該呼籲每個實例DbContext所創建。

但在我的情況下,只有在調試時檢查實例時才調用它。我在OnConfiguring有一個斷點,但即使調用該方法也沒有。

OnConfiguring方法。 OnConfiguring方法

已創建實例但尚未調用OnConfiguring 實例已創建

OnConfiguring調用了查看對象,但它的斷點沒有命中。 OnConfiguring調用

一般承認的答案

根據文檔,應該為創建的每個DbContext實例調用OnConfiguring。

我不知道你引用了哪些文檔,但我確信它並沒有說OnConfiguring 創建上下文運行。因為它沒有。它在第一次實際使用上下文實例時運行。這就是您在調試視圖中開始檢查上下文時立即看到方法調用的原因。當您在調試器中暫停斷點時,調試器將永遠不會跳轉到另一個斷點,即使代碼被命中。

應該創建和處理大量的上下文。因此,創建上下文必須盡可能輕量級。它的內部組件盡可能通過延遲初始化創建。


熱門答案

為了防止其他人遇到這個問題,我不得不使用一個空構造函數來調用OnConfiguring:

public ReadingContext() : base()
{

}
protected override void OnConfiguring(DbContextOptionsBuilder  
optionsBuilder)
{
  var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json", 
    optional: true, reloadOnChange: true);
  config = builder.Build();  
  optionsBuilder.UseSqlServer(config.GetConnectionString
    ("ReadingContextConnection"));
}


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow