왜 Effort.EF6 단위 테스트를 추가 한 후 C # MVC 웹 사이트를 더 이상 실행할 수 없습니까?

asp.net-mvc c# effort entity-framework structuremap

문제

내 C # MVC 웹 사이트는 Dependency Injection을 위해 StructureMap을 사용합니다.

내 DbContext의 생성자는 다음과 같습니다.

public class PortalEntityModel : DbContext
{
    public PortalEntityModel() : base("name=PortalEntityModel")
    {
    }
}

이제 단위 테스트에 Effort.EF6을 추가했습니다.이 경우 DbContext 생성자를 변경해야했습니다.

public class PortalEntityModel : DbContext
{
    public PortalEntityModel() : base("name=PortalEntityModel")
    {
    }
}

나는 이제 단위 코드를 단위 테스트 할 수있다. 변경 이후에 StructureMap을 만들 수 없으므로 더 이상 웹 사이트를 실행할 수 없습니다.

기본 인스턴스가 등록되어 있지 않으므로 'System.Data.Common.DbConnection'유형에 대해 자동으로 결정할 수 없습니다.

어떻게하면 Effort.EF6도 사용할 수있게하면서 이전과 같이 DBContext를 초기화하는 방법을 StructureMap에 알릴 수 있습니까?

편집하다 --

웹 사이트가 다음과 같이 시작되면 StructureMap이 시작됩니다.

public class PortalEntityModel : DbContext
{
    public PortalEntityModel() : base("name=PortalEntityModel")
    {
    }
}

웹 사이트 시작시 자동으로 시작됩니다.

public class PortalEntityModel : DbContext
{
    public PortalEntityModel() : base("name=PortalEntityModel")
    {
    }
}

인기 답변

나는 그것을 알아낼 수 있었다. DBContext 구조체의 생성자를 변경하면 DbConnection을 전달할 수 없습니다.

그래서 저는 두 생성자를 모두 가지고 있고 structuremap 설정에 약간의 로직을 추가하여 웹 사이트가 사용할 생성자를 알려줍니다.

c.For (). Use (). SelectConstructor (() => new PortalEntityModel ());




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