最大化MVC 應用程式開發的Ninject:最佳化與便利
DbContext 管理
DbContext 管理
Ninject 確保您的DbContext 已被適當處置和清理。如參考文件所述,當垃圾收集器收集關聯範圍時,容器負責處置 Disposable 對象,例如 DbContext。
基本控制器通用性public class CurrentUserProfileFilter : IAuthorizationFilter { public void OnAuthorization(AuthorizationContext filterContext) { var currentUserName = filterContext.HttpContext.User.Identity.Name; // Set ViewBag properties... } }
public class GlobalFilterProvider : IFilterProvider { public IEnumerable<Filter> GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor) { foreach (var filter in dependencyResolver.GetServices<IActionFilter>()) { yield return new Filter(filter, FilterScope.Global, order: null); } // Similar loop for other filter types... } }
這個方法不需要每個控制器接受DbContext 作為
最佳化DbContext建立出於效能考慮,您可能需要最佳化 DbContext 實例建立。考慮為 Ninject 實作一個自訂 DependencyProvider,用於檢查是否已為目前請求建立 DbContext。如果沒有,則建立 DbContext 並將其儲存在 HttpContext 封包中。如果存在,則檢索它並使用現有實例。 此策略可確保僅當請求需要資料庫存取時才建立 DbContext 實例。以上是Ninject 如何優化 MVC 應用程式中的 DbContext 管理和控制器開發?的詳細內容。更多資訊請關注PHP中文網其他相關文章!