[英]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.