노력 단위 테스트 Entity framework 6.1.3 DB-first

c# effort entity-framework unit-testing

문제

Effort 프레임 워크 (버전 1.1.4)를 사용하여 유닛 DB-layer를 테스트 할 때 문제가 발생합니다.

엔티티 프레임 워크 6.1.3을 사용하는 DB 계층이 있으며 모델은 데이터베이스 우선 접근법을 사용하여 생성되므로 모델을 설명하는 *.edmx 파일이 있습니다.

다음과 같은 노력을 통해 단위 테스트에서 사용되는 추가 생성자를 노출하는 부분 클래스를 만들었습니다.

public partial class Entities
{
    public Entities(DbConnection connection)
        : base(connection, true)
    {
    }
}

간단한 단위 테스트는 다음과 같습니다.

public partial class Entities
{
    public Entities(DbConnection connection)
        : base(connection, true)
    {
    }
}

단위 테스트를 실행하면 행에 대한 예외가 발생합니다.

public partial class Entities
{
    public Entities(DbConnection connection)
        : base(connection, true)
    {
    }
}

{ "공급자가 ProviderManifest 인스턴스를 반환하지 않았습니다."} InnerException 메시지 : { "저장소 버전을 확인할 수 없으므로 유효한 저장소 연결 또는 버전 힌트가 필요합니다."}

내가 찾은 다른 게시물은 *.edmx 파일의 ProviderManifestToken 속성을 "2012"에서 "2008"로 변경하는 것을 제안합니다. 이것은 문제를 해결하는 것으로 보이지만 여기에서 처음으로 컨텍스트를 사용할 때 내 다른 예외를 제공합니다.

public partial class Entities
{
    public Entities(DbConnection connection)
        : base(connection, true)
    {
    }
}

NotSupportedException 'System.Data.EntityClient.EntityProviderFactory'형식의 공급자 팩터 리에 대한 공급자 이름을 확인할 수 없습니다. ADO.NET 공급자가 응용 프로그램 구성에 설치되거나 등록되어 있는지 확인하십시오.

누구나이 문제를 해결하는 방법을 알고 있으므로 엔티티 프레임 워크 6.1.3 DB 첫 번째 접근법을 사용하여 노력할 수 있습니까?

EF (버전 1.1.4)를 사용하여 EF 4 및 EF 5에서 DB 첫 번째 접근 방식으로 만든 단위 테스트 DB 레이어를 성공적으로 사용할 수있었습니다. 이것이 EF 버전이 관심 대상이 될 수 있다고 생각하는 이유입니다 ...

수락 된 답변

내 동료가 내 문제에 대한 해결책을 찾았습니다!

분명히 "Effort.EF6"Nuget 패키지 대신 "Effort"Nuget 패키지를 사용하고있었습니다. 다른 것을 설치 제거하고 설치 한 후에도 태그로 App.Config를 업데이트해야했습니다.

  <system.data>
    <DbProviderFactories>
      <add name="Effort.Provider" invariant="Effort.Provider" description="Effort.Provider" type="Effort.Provider.EffortProviderFactory,Effort" />  
    </DbProviderFactories>
  </system.data>

  <entityFramework>
    <providers>
      <provider invariantName="Effort.Provider" type="Effort.Provider.EffortProviderServices, Effort" />
    </providers>
  </entityFramework>

또한 노력 제공자를 등록하기 위해 단위 테스트를위한 SetUp에 호출을 포함 시켰습니다.

  <system.data>
    <DbProviderFactories>
      <add name="Effort.Provider" invariant="Effort.Provider" description="Effort.Provider" type="Effort.Provider.EffortProviderFactory,Effort" />  
    </DbProviderFactories>
  </system.data>

  <entityFramework>
    <providers>
      <provider invariantName="Effort.Provider" type="Effort.Provider.EffortProviderServices, Effort" />
    </providers>
  </entityFramework>

이것은 나의 문제를 해결했다. 희망적으로 다른 사람들에게 도움을 줄 수 있습니다!




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