계산 된 열에 대한 노력 (EF 테스트 도구) 사용


문제

DB에 직접 액세스하는 여러 가지 통합 테스트가 있습니다. 테스트 전제 조건 오브젝트를 작성합니다. 테스트를 수행 한 후 나중에 정리합니다.하지만 메모리 내에서 동일한 접근 방식을 시도해 보려고합니다.

나는 프로젝트에서 노력 을 사용했고 매우 쉽게 작동합니다. 그러나 나는 내가 노력해 왔던 문제에 부딪쳤다. 그러나 해결할 수 없었다.

테스트 전제 조건으로 더미 데이터로 채워야하는 테이블 중 하나에는 계산 된 열 (null이 아닌 nvarchar)이 포함되어 있습니다. 테스트 범위에 대해서는 해당 열의 값에 대해서는별로 신경 쓰지 않습니다.하지만 더미 데이터를 삽입하려고해도 데이터가 무시되고 오류가 발생합니다.

"Column 'x' cannot be null. Error code: GenericError"

내 테스트에서 나는 실제 코드에서 사용되는 것과 동일한 edmx 파일을 사용하고있다. 이것은 edmx 사본을 지속적으로 업데이트하지 못하게합니다.

열이 nullable 계산되지 않은 열이되도록 (런타임에) edmx를 업데이트하도록 테스트를 수행 할 수있는 방법이 있습니까? [OnModelCreating 무시] 또는이 오류를 중지하기 위해 기본값을 삽입하는 방법이 있습니까? [SaveChanges 무시]

나는 현재 다음을 시도했다.

  • .Add () 대신 .Attach ()를 사용하여 개체 첨부
  • 추가 후 EntityState를 Unchanged로 설정
  • Entry.OriginalValues를 통한 값 강제 [엔터티가 추가 상태에 있기 때문에이 값]

편집하다:

OnModelCreating 메서드를 재정의하려고했지만 DB-First이므로 아무 소용이 없습니다.

"Column 'x' cannot be null. Error code: GenericError"

인기 답변

XML 편집기에서 EDMX 파일을 열고 StorageModels 아래에서 엔티티를 찾고 StoreGeneratedPattern="Computed" 열 정의에 추가하십시오.

그러나 해당 테이블을 업데이트 또는 삭제하고 추가하면이 수정 사항을 잃게됩니다. 실제로 edmx 파일을 업데이트하고 필요한 경우 StoreGeneratedPattern="Computed" 추가하는 콘솔 응용 프로그램을 작성할 수 StoreGeneratedPattern="Computed" 응용 프로그램을 Studio의 미리 빌드 이벤트에 추가 할 수 있습니다.





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