MVC6 의존성 주입을 사용하는 EF7 컨스트럭터

asp.net-core-mvc c# dependency-injection entity-framework entity-framework-core

문제

새로운 MVC6 및 EF7 프레임 워크 테스트.

우리는 종종 데이터베이스 레이어에 HttpContext가 필요합니다. MVC6에서이를 수행하려면 다음과 같은 DbContext 생성자가 필요합니다.

 public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {                  
        HttpContext _httpContext;                     
        public ApplicationUser CurrentUser { get; set; }                

        public ApplicationDbContext(IHttpContextAccessor httpContextFactory=null)

Startup.cs에서는 DI를 다음과 같이 등록합니다.

services.AddTransient<IHttpContextAccessor, HttpContextAccessor>();

이것은 완벽하게 작동합니다 ...

... 그렇지 않을 때까지. 응용 프로그램을 실행할 때 모두 훌륭합니다. 그러나 "dnx.ef migration add"를 사용하여 모델 변경 사항을 적용해야 할 경우 "이 객체에 대해 정의 된 매개 변수없는 생성자가 없습니다."라는 오류 메시지가 나타납니다.

좋아, 문제 없어. 따라서 매개 변수가없는 추가 생성자를 추가합니다.이 생성자는 마이그레이션 프로세스에서만 사용됩니다. 그러나 DI 프로세스는 매개 변수없는 생성자 만 등록하므로 HttpContext 객체는 전달되지 않습니다.

MVC의 기본 DI 모델을 사용하여 강제로 내 생성자를 매개 변수와 함께 사용하려면 어떻게해야합니까? 마이그레이션을위한 매개 변수없는 생성자를 유지 하시겠습니까?

인기 답변

클래스가 등록 될 때 호출 할 생성자를 지정하는 것은 기본 ASP.NET out-of-box DI (하나의 공용 생성자가있는 형식 만 해결 함)에서 지원되지 않습니다.

이 목적을 위해보다 고급 DI를 사용할 수 있습니다 - 즉, ASP.NET 5 ( "Autofac": "4.0.0.0-alpha2", "Autofac.Dnx": "4.0.0-alpha1" ).




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.