이것은 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가 자동으로 엔터티를 삭제하지 않기 때문입니다. 엔티티를 수동으로 삭제하면 오류가 사라집니다.