[.net] 이 오류가 발생하는 이유 : 다음 EntitySet / AssociationSet-Entity1에 대해 지정된 매핑이 없습니까?

Model First 접근 방식으로 Entity Framework 4를 사용하고 있습니다.

프로젝트를 시작하고 엔터티를 설계하고 데이터베이스를 생성했습니다. 모든 것이 잘 작동했습니다.

그런 다음 돌아가서 내 모델에 다른 엔티티를 추가해야했습니다. 그러나 엔티티를 EDMX로 끌면 다음 오류가 발생합니다.

여기에 이미지 설명 입력

좋구나! Entity1을 테이블에 매핑하기 만하면됩니다.하지만 헤이! Model First 접근 방식을 사용하고 있으며 DDL을 생성 할 때 테이블을 생성 할 것으로 예상합니다.

이 오류를 어떻게 해결합니까?



답변

이것은 EF4가 모델 우선으로 작동하는 방식 때문입니다.

모델 우선 모델을 처음 생성하면 SSDL이 존재하지 않는 상태입니다. 엔티티를 드래그하고 연관시킬 수 있지만 EDMX 파일에서 SSDL을 살펴보면 엔티티 중 SSDL에 연관된 스토리지 테이블이 없음을 알 수 있습니다.

Generate Database From Model상황에 맞는 메뉴 항목 을 클릭하면 변경됩니다 . 혼란스러운 부분은이 작업이 단순히 DDL 스크립트를 생성하는 것 이상을 수행한다는 것입니다. 실제로 SSDL 정보를 포함하도록 EDMX 파일을 변경합니다. 이 시점부터 EDMX 파일은 디자이너 / CSDL의 모든 엔터티가 SSDL의 엔터티에 매핑되어야하는 상태가됩니다. 매핑되지 않으면 컴파일 시간 오류가 발생합니다.

다음 EntitySet / AssociationSet-(EntityName)에 대해 지정된 매핑이 없습니다.

또 다른 흥미로운 사실은 컴파일을 방해하는 종류의 오류가 아니라는 것입니다. 실제로 출력 클래스 라이브러리를 생성합니다. 경고 나 뭐 그런 거 아니야?

이 오류를 방지하려면 새 엔티티를 삽입 한 후 Generate Database From Model다시 해야 합니다. 그러면 SSDL이 업데이트되고 매핑이 수정됩니다.

편집하다

model-first를 사용하지 않고 “데이터베이스에서 업데이트”하면 DB 서버에서 테이블을 삭제 한 경우에도이 오류가 발생합니다. Entity Framework가 자동으로 엔터티를 삭제하지 않기 때문입니다. 엔티티를 수동으로 삭제하면 오류가 사라집니다.


답변

두 엔터티 간의 연결을 만든 후 참조 제약 조건을 만드는 것을 잊었 기 때문에 동일한 오류가 발생하는 것을 발견했습니다.


답변

오류 3027 : 다음 EntitySet / AssociationSet에 대해 지정된 매핑이 없습니다 … “-Entity Framework 문제

Entities Framework로 모델을 개발하는 경우 때때로 다음과 같은 성가신 오류가 발생할 수 있습니다.

오류 3027 : 다음 EntitySet / AssociationSet [엔티티 또는 연결 이름]에 대해 지정된 매핑이 없습니다.

이것은 EDM에서 모든 것이 잘 보이는 경우 이해가되지 않을 수 있지만이 오류는 일반적으로 EDM과 관련이 없기 때문입니다. “데이터베이스 파일 재생성”이라고 말해야합니다.

엔티티는 빌드 중에 SSDL 및 MSL을 확인하므로 EDM을 변경했지만 데이터베이스 모델 생성을 사용하지 않는 경우 SQL 스크립트에 누락 된 항목이 있다고 불평합니다.

간단히 말해서 해결책은 ” 모델을 먼저 개발하는 경우 EDM을 업데이트 한 후 매번 데이터베이스 모델생성하는 것을 잊지 마십시오 . 문제가 해결되기를 바랍니다.”입니다.


답변

제 경우에는 다른 개발자가 기본 데이터베이스에서 일부 테이블을 제거했습니다. 이것을 깨달았고 엔티티에서이 테이블을 제거했을 때 문제가 해결되었습니다. 들리는 것만 큼 분명하지 않았습니다.


답변

같은 오류가 발생했지만 모델 우선을 사용하지 않았습니다. 내 EDMX 파일에는 디자이너에 표시되지 않았지만 테이블에 대한 참조가 포함되어있는 것으로 나타났습니다. 흥미롭게도 Visual Studio (2013)에서 테이블 이름에 대한 텍스트 검색을 수행했을 때 테이블을 찾을 수 없습니다.

이 문제를 해결하기 위해 외부 편집기 (Notepad ++)를 사용하여 EDMX 파일에서 문제가되는 테이블에 대한 참조를 찾은 다음 (주의 깊게) 테이블에 대한 모든 참조를 제거했습니다. 처음에 EDMX 파일이 어떻게이 상태가되었는지 모르겠다 고 말해서 유감입니다.


답변

테이블 변경이 있었고 edmx 모델 브라우저에서 확인 한대로 끝에 숫자 1이있는 다른 엔티티 (예 : MyEntity1및 a MyEntity)가 생성되었습니다. 두 엔티티에 대한 무언가가 함께 처리를 혼란스럽게했습니다.

테이블을 제거하고 다시 추가하면 문제가 해결되었습니다.


TFS가 연결되어 있으면 삭제 후 edmx 체크인을 수행하십시오. 그런 다음 최신 버전을 가져와 명확한 2 단계 프로세스로 다시 추가하십시오. 그렇지 않으면 TFS가 문제를 일으키는 것으로 보이는 동일한 명명 된 엔터티를 삭제하고 다시 추가하는 것과 혼동됩니다.


답변

더 빠른 방법은 테이블을 삭제하고 다시 추가하는 것이 었습니다. 자동 매핑되었습니다. 🙂