Dependancy Injected new (EF7, ASP.NET 5, vnext)로 작성된 DbContext를 채운 후에 DbContext가 비어 있습니다.

asp.net asp.net-core dbcontext entity-framework entity-framework-core

문제

나는 상대적으로 EF7에 익숙하지 않으며 컨트롤러 생성자에 대한 DbContexts의 Dependency Injection이 주어진 Action 메서드 내에서 사용하기 위해 DbContext를 가져 오는 좋은 방법이라고 들었다. 그러나 Dependency Injection이 불가능한 경우 (예 : 일반 클래스의 Db 액세스) 및 using(VectorDbContext dbContext...) 패턴을 사용해야하는 경우가 using(VectorDbContext dbContext...) .

나는 using 패턴으로 생성 된 DbContext에 데이터를 추가하는 것이 의존성 삽입 문맥에 의해 접근 될 수없는 문제에 봉착했다. DbContext는 테스트에 사용되는 간단한 InMemory 데이터베이스입니다. 아무 것도 연결하지 않습니다.

엔티티를 DbContext에 추가하는 코드는 다음과 같습니다. Startup.cs에서이 코드를 호출합니다.

using (ExampleDbContext dbContext= new ExampleDbContext()) {
    dbContext.Things.Add(
        new Thing() {
            Stuff= "something"
        });

    dbContext.SaveChanges();
}

컨트롤러 내의 액세스 코드는 다음과 같습니다.

using (ExampleDbContext dbContext= new ExampleDbContext()) {
    dbContext.Things.Add(
        new Thing() {
            Stuff= "something"
        });

    dbContext.SaveChanges();
}

단계별로 진행할 때 List1에는 예상 한 항목이 있지만 List2는 항상 비어 있습니다.

내가 도대체 ​​뭘 잘못하고있는 겁니까? DbContexts가 어떻게 든 동기화되지 않은 것처럼 보입니다. Dependency Injection이 DbContext를 어떻게 생성합니까?

편집 : 난 그냥 몇 가지 추가 테스트를하고 사용하여 만든 DbContext 내에서 추가 된 실체 확인 한 new 에서만 볼 수있는 new 가 연결 믿고 저를 선도하고, 주입 된 DbContext 내에서 추가 된 개체가 주조 DbContext 내에서만 볼 수 있습니다 다른 백업 데이터베이스로 보내지 만 확인할 수는 없습니다.

수락 된 답변

내가 틀릴 수도 있지만 내 가정은 코드에서 DbContext 의 새 인스턴스를 만들 때 기본 연결 문자열을 기본값으로 설정하는 매개 변수가없는 생성자를 사용하고 있다는 것입니다. 그러나 DI 주입 DbContext 는 명시 적으로 전달 된 다른 연결 문자열을 가진 다른 생성자를 사용하여 DbContext 수 있습니다.

이것은 생성자 매개 변수를 명시 적으로 지정하는 Unity 구성의 예입니다.

<register type="DbContext, [assembly-name]" mapTo="DbContext, [assembly-name]">
<constructor>
    <param name="nameOrConnectionString" value="Test"/>
</constructor>
</register>

그래서 당신 컨테이너의 구성을 점검 할 것입니다.




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