簡體   English   中英

Nhibnerate .net Core 3.1 初始化

[英]Nhibnerate .net Core 3.1 Initialisation

我有一個以前從未遇到過的問題(我多年來一直使用 NHibernate 和 .NET 框架)

在我當前的項目中,我正在創建我的 session 工廠 Fluently.Configure().....BuildSessionFactory() 並將其添加到我的 DI,在 ConfigureServices 方法(.net core 3.1)中

該工廠后來用於打開session並執行sql。

在幸福的道路上,這很好,沒有問題,一切都很好。

問題是,如果 sql 實例出現問題 - 就像數據庫脫機一樣,在 BuildSessionFactory() 執行時網站的啟動將出錯。 然后無法將 session 工廠添加到 DI 並且站點無法加載。 此外,由於站點初始化失敗,它無法重定向到自定義錯誤頁面。

此外,在 .NET 核心 3 中,不會重試初始化。因此,無論數據庫現在是否可用,我都會收到相同的錯誤。

在嘗試解決該問題並對其進行調查時,我確實設法將 session 工廠(錯誤)替換為臨時假工廠(默認實現),以規避應用程序的初始化。 如果找到此實例,則進一步向下重定向到錯誤頁面。 但顯然,然后我陷入這種情況,直到應用程序池被回收並且該過程再次開始。

是否有理由在此初始化點建立數據庫連接 - 是否有辦法將此部分移到工廠創建之外,以便在后續請求中能夠重試?

https://github.com/nhibernate/nhibernate-core/discussions/2638

有人在 nhibernate 論壇上回答了我的問題。

解決方案是添加

.ExposeConfiguration(cfg =>
{
cfg.SetProperty("hbm2ddl.keywords", "none");
})

我還添加了

Dialect dialect = Dialect.GetDialect(cfg.GetDerivedProperties());
SchemaMetadataUpdater.QuoteTableAndColumns(cfg, dialect);

希望這會引用表格和列,但我還沒有測試過

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM