이 오류가 발생하는 이유 : 다음 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)에서 테이블 이름에 대한 텍스트 검색을 수행했을 때 테이블을 찾을 수 없습니다.
문제를 해결하기 위해 외부 편집기를 사용하여 EDMX 파일에서 문제가되는 테이블에 대한 참조를 찾은 다음 (주의 깊게) 테이블에 대한 모든 참조를 제거했습니다. 처음에 EDMX 파일이 어떻게이 상태가되었는지 모르겠다 고 말해서 유감입니다.
더 빠른 방법은 테이블을 삭제하고 다시 추가하는 것이 었습니다. 자동 매핑되었습니다. :)
테이블 변경이 있었고 edmx 모델 브라우저에서 확인 한대로 끝에 숫자 1이있는 다른 엔티티 (예 : MyEntity1
및 a MyEntity
)가 생성되었습니다. 두 엔티티에 대한 무언가가 함께 처리를 혼란스럽게했습니다.
테이블을 제거하고 다시 추가하면 문제가 해결되었습니다.
TFS가 연결되어있는 경우 삭제 후 edmx 체크인을 수행하십시오. 그런 다음 최신 버전을 가져와 명확한 2 단계 프로세스로 다시 추가하십시오. 그렇지 않으면 TFS가 문제를 일으키는 것으로 보이는 동일한 명명 된 엔터티를 삭제하고 다시 추가하는 것과 혼동됩니다.
Database First
접근 방식 을 사용하는 사람들의 경우 새 엔티티를 삽입 한 후해야 할 일은 파일 Generate Database From Model
을 마우스 오른쪽 버튼으로 클릭 .edmx
하고 선택하는 것입니다.Generate Database From Model...
데이터베이스에서 테이블을 삭제했을 때이 오류가 발생했습니다. EDMX 다이어그램을 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동하여 속성 창의 목록에서 테이블을 선택하고 다이어그램에서 삭제 (삭제 키 사용)하여 문제를 해결했습니다.
- 솔루션 탐색기로 이동하여 검색 버튼을 클릭합니다.
- 휴가가 선택 모두
Search within file content
와Search External Files
- 매핑이 인식하지 못하는 엔티티 이름을 입력합니다.
- Delete all files RELATED to the problem. Those will probably be named after the same missing entity. DO NOT delete any file with your Context Class name on the file, specially if their extensions are .cs or .tt. In the Context .cs file.
remove all lines of codes referencing the missing entity. They will look like this:
public virtual DbSet< Entity1> Entity1 { get; set; }
This error is common to tables deleted from the database.
When one drops a table in the database, or one just changes the web.config.connectionStrings
for the EF Mapped database, to point to a new one and not the one used to generate the original mappings is the problem.
It is this new db these entities with the 3027 error aren't present.
I had the error when I was trying to make a custom result for a stored procedure and assumed it had to be an entity.
The solution was that I just made a complex type in the Model browser and assigned that as a result to the "Edit function imports".
I will add it here since it looks like this question is where google takes you when you get this error.
I had set everything correctly (cardinalities and dependent properties) but could not figure out why I keep receiving error. Finally figured out that, EF generated a column in dependent table on its own (table_tablecolumn) and it does not have any relation to the table, so no mapping was specified. I had to delete the column in EDMX file and rebuild the solution which fixed the issue. I am using DB approach.
Update Model from Database doesn't works for me.
I had to remove the conflicted entity, then execute Update Model from Database, lastly rebuild the solution. After that, everything works fine.
다른 사람들을 위해 이것을 공유합니다. 제 경우에는 공유 MVC 솔루션을 개발하고 드롭 다운에 사용하는 테이블에 공통 모듈을 사용했습니다. 새 테이블을 추가하여 엔티티 모델을 업데이트 할 때 오류가 발생했습니다. EDMX를 업데이트했을 때 데이터베이스에 대한 내 권한 액세스가 업데이트되었을 가능성이 높아서 특정 테이블에 액세스 할 수 없게되었습니다 no mapping specified
.
다시 추가하고 사용자에게 액세스 권한을 부여하면 문제가 해결되었습니다.
'Programing' 카테고리의 다른 글
형식화 된 BigDecimal 값을 인쇄하는 방법은 무엇입니까? (0) | 2020.09.02 |
---|---|
배열에서 모든 요소의 색인을 찾는 방법은 무엇입니까? (0) | 2020.09.02 |
VisualVM에 JVM 인수를 어떻게 제공합니까? (0) | 2020.09.02 |
현재 사용자 디렉토리는 어떻게 얻을 수 있습니까? (0) | 2020.09.02 |
PHP DateInterval에서 총 초 계산 (0) | 2020.09.02 |