DbContext와 함께 MVC용 Ninject 사용
Ninject는 널리 사용되는 .NET용 종속성 주입 프레임워크입니다. 이를 통해 애플리케이션 개체의 생성 및 수명을 관리할 수 있습니다.
DbContext 정리 보장
언급한 대로 DbContext는 Ninject에 의해 생성되어 컨트롤러에 주입됩니다. . 기본적으로 Ninject는 연결된 범위 개체가 가비지 수집기에 의해 수집되는 즉시 일회용 개체(예: DbContext)를 삭제합니다. 즉, DbContext에서 Dispose를 명시적으로 호출할 필요가 없습니다.
반복되는 DbContext 인수 방지
공통 초기화를 처리하고 DbContext를 허용하는 기본 컨트롤러가 있는 경우 인수를 사용하는 경우 InParentScope() 범위 확장을 사용하면 모든 컨트롤러에 이 인수를 추가하지 않아도 됩니다. 이는 삽입된 개체가 가비지 수집되는 즉시 DbContext를 삭제합니다.
public class BaseController : Controller { protected DbContext MyDbContext; public BaseController() { MyDbContext = _context; } }
DbContext 생성 최적화
기본적으로 Ninject는 필요하지 않은 경우에도 컨트롤러를 생성하는 동안 DbContext. 이 동작을 최적화하려면 실제로 필요한 경우에만 DbContext를 생성하는 고유한 범위를 만들 수 있습니다. 예는 다음과 같습니다.
public class RequestScoped : Ninject.Activation.Scope { protected override object Activate(IContext context, object instance) { bool disposeAfterUse = (instance is Disposable); var result = context.Kernel.Components .Get<MyDbContextFactory>() .CreateContext(); return disposeAfterUse ? new DisposedWhenRequestEnds(result) : result; } }
이 범위는 다음과 같이 사용할 수 있습니다.
kernel.Bind<MyDbContext>() .To<MyDbContext>() .InScope(new RequestScoped());
이제 DbContext는 요청에 필요할 때만 생성됩니다.
위 내용은 Ninject는 MVC 애플리케이션에서 DbContext 관리를 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!