Asp.net-Mvc
多個 DbContext,多個 Database.SetInitializer
我創建了兩個 DbContext,一個用於應用程序配置,第二個用於日誌記錄。
原因是,我想在日誌數據庫上設置一個最大大小,這樣它就不會耗盡所有可用磁碟空間並阻止其他數據庫工作。
在我的 global.asax.cs 文件中,我有以下內容:
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); Database.SetInitializer<AdminContext>(new AdminInitialiser()); Database.SetInitializer<LoggingContext>(new LoggingInitialiser()); }未呼叫 LoggingInitialiser 中的 InitializeDatabase 方法。這是因為只能設置一個初始化程序嗎?有沒有辦法為兩個 DbContexts 設置初始化程序?
而是在 DbContext 建構子中設置初始化程序。
public class AdminContext : DbContext { public AdminContext() { Database.SetInitializer(new AdminInitialiser()); } } public class LoggingContext : DbContext { public LoggingContext() { Database.SetInitializer(new LoggingInitialiser()); } }
是的,你可以做到。您只需要在繼續下一個之前進行初始化。
Database.SetInitializer<MyDBContext>(myInitializer); MyDbContext context = new MyDbContext(); context.Database.Initialize(false); Database.SetInitializer<MySecondDBContext>(myInitializer); MySecondDbContext context2 = new MySecondDbContext(); context2.Database.Initialize(false);注意:我通常從依賴解析器獲取 DbContext 實例……