2

InDocDbContext: DbContext 및 이 데이터베이스에 일부 초기 데이터를 입력하도록 "가르쳐졌습니다".Ninject 모듈 내에서 EF DbContext 데이터베이스를 초기화하십시오.

내 ASP.NET 응용 프로그램의 global.asax에있는 내 App_Start 메서드에 초기화 코드를 넣지 않도록 최선을 다하고 있습니다.

저는 Ninject를 IOC 컨테이너로 사용하고 있습니다. 초기화 로직을 NinjectModule에 넣거나 컨텍스트에서 숨길 수 있으므로 global.asax 코드로 가져올 필요가 없습니다.

답변

2

당신은 문맥의 정적 생성자에 추가 할 수 있습니다 :

public InDocDbContext : DbContext 
{ 
    static InDocDbContext() 
    { 
     Database.SetInitializer<InDocDbContext>(new InDocDbContextInitializer()); 
    } 
} 

당신이 EF 4.3 이상을 사용하는 경우 당신은 또한 단순히 web.config 파일의 초기화를 정의 할 수 있습니다. original 4.3 documentation 또는 documentation for the current version을 참조하십시오.

+0

하지만'Database.Initialize (true/false)'가 어디에서 호출 되었습니까? 아니면 의무 사항은 아닌가? –

+0

필수 사항은 아닙니다. EF는 컨텍스트를 처음 사용할 때이를 호출합니다. –

+0

+1 정적 생성자에 대한,하지만 난 web.config 솔루션에 대한 나의 의구심을 가지고. Ninject가 IoC에 사용 되었기 때문에 삽입 된 어셈블리와 일치하지 않을 수도있는 어셈블리를로드하는 것이 불편합니다. –

관련 문제