노력 (C #) - 어떤 엔터티에 데이터를 시딩 할 때 '시퀀스에 일치하는 요소가 없습니다.'

c# effort entity-framework unit-testing

문제

내 프로젝트에서 몇 가지 웹 서비스 호출에 대한 일부 단위 테스트를 작성하려고합니다. 내 프로젝트에서 Entity Framework 6.1.3을 사용하여 서비스 계층에서 데이터를 검색합니다 (코드 우선 접근 방식 사용). DatabaseContext 객체를 모의하는 방법에 대한 연구를 한 결과, 노력이 이것을 할 수 있다는 것을 알게되었습니다.

유닛 테스트에서 Effort를 구현할 때 문서를 따라 갔지만 엔터티에 데이터를 시드하려고하면 "System.InvalidOperationException : '시퀀스에 일치하는 요소가 없습니다'예외가 발생합니다. 왜 이런 일이 일어나고 있는지 나는 확신 할 수 없다. 어떤 도움을 많이 주시면 감사하겠습니다. 감사!

여기 코드가 어떻게 생겼는지 ....

  //THE CALLER -- Doing what Effort suggests to do.

    var dbConnection = DbConnectionFactory.CreateTransient();
        FakeDbContext = new FakeDbContext(dbConnection);
        DatabaseSeed.AddTestData(FakeDbContext);

여기에 엔티티에 데이터를 입력하는 위치가 있습니다 ...

  //THE CALLER -- Doing what Effort suggests to do.

    var dbConnection = DbConnectionFactory.CreateTransient();
        FakeDbContext = new FakeDbContext(dbConnection);
        DatabaseSeed.AddTestData(FakeDbContext);

여기 내 법인 모델입니다 ...

  //THE CALLER -- Doing what Effort suggests to do.

    var dbConnection = DbConnectionFactory.CreateTransient();
        FakeDbContext = new FakeDbContext(dbConnection);
        DatabaseSeed.AddTestData(FakeDbContext);

다음은 내 DatabaseContext입니다 ...

  //THE CALLER -- Doing what Effort suggests to do.

    var dbConnection = DbConnectionFactory.CreateTransient();
        FakeDbContext = new FakeDbContext(dbConnection);
        DatabaseSeed.AddTestData(FakeDbContext);

또한 OnModelCreating을 재정의하는 다른 클래스 FakeDbContext.Base가 있습니다.

다음은 스택 추적입니다.

StackTrace

수락 된 답변

스택 추적은 데이터 공급자가 "이름에서 상점 유형"을 찾을 때 예외가 발생 함을 보여줍니다. 이것은 노력에서 지원하지 않는 데이터 유형을 사용하고 있음을 나타냅니다. 이 작업은 Effort 프로젝트문제로 확인됩니다.


인기 답변

이것이 도움이되기를 바랍니다.

많은 대답은 EF 문에 FirstorDefault() 를 추가 FirstorDefault() 하지만 데이터 주석을 사용하는 잘못된 속성에서도 발생합니다.

데이터 주석을 사용할 때 추가하는 속성에주의하십시오.

아래 예제에서는 TypeName = "string" 누락되었습니다.이 TypeName = "string" 은 데이터베이스의 데이터 형식이므로 nvarchar 이어야합니다.

또한 Order = n (0으로 시작)

과거 동료 소스 코드를 업데이트하는 동안이 문제가 발생했습니다.

[Display(Name = "Name")]
[MaxLength(4000)]
[Column("Name", Order = 14, TypeName = "string")]
public string Name { get; set; }

그런 다음 코드를 수정했습니다.

[Display(Name = "Name")]
[MaxLength(4000)]
[Column("Name", Order = 14, TypeName = "string")]
public string Name { get; set; }

:)




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