새 엔터티 스칼라를 추가 할 때 Entity Framework 4 매핑 조각 오류
Entity Framework 4 모델 우선 디자인이 있습니다. 나는 디자이너에서 내 모델의 첫 번째 초안을 만들었고 모든 것이 잘되었습니다. 나는 데이터베이스를 컴파일하고 생성했습니다.
나중에 기존 엔터티 중 하나에 문자열 스칼라 (Nullable = true)를 추가하려고했는데 컴파일 할 때 이러한 유형의 오류가 계속 발생합니다.
오류 3004 : 569 행에서 시작하는 조각 매핑 문제 : Set MyEntities의 MyEntity.MyValue 속성에 대해 지정된 매핑이 없습니다. 키 (PK)가있는 엔티티는 다음과 같은 경우 왕복하지 않습니다. 엔티티가 [MyEntities.MyEntity] 유형입니다.
저는 계속해서 EDMX 파일을 수동으로 열고 스칼라를 추가 할 때마다 XML을 수정해야합니다.
무슨 일이 일어나고 있는지에 대한 아이디어?
내 엔티티에 속성을 추가 / 변경 / 삭제 한 후 컴파일하기 전에 "모델에서 데이터베이스 생성"을 수행해야한다는 사실을 발견했습니다. 그렇지 않으면 3004 매핑 오류가 발생합니다.
모델에서 문제가되는 테이블을 제거한 다음 다시 추가했는데 모두 잘되었습니다.
데이터베이스에서 모델을 만드는 분들은 DB를 변경 한 후이 문제가 발생했습니다. 어떤 이유로 DB에서 필드 이름을 변경했을 때 발생했습니다 (데이터 유형을 변경해도 발생한다고 생각합니다).
저에게 해결책은 작업 공간을 마우스 오른쪽 버튼으로 클릭하고 "데이터베이스에서 모델 업데이트"를 선택하는 것이 었습니다. 이렇게하면 DB의 속성이 모델에 추가되지만 이전 속성은 제거되지 않으며 3004 오류가 발생합니다.
작업 공간을 마우스 오른쪽 버튼으로 클릭하고 "Validate"를 선택합니다. 그러면 문제가되는 속성을 보여주는 오류 목록이 표시됩니다. 그런 다음 문제가되는 각 속성을 마우스 오른쪽 버튼으로 클릭하고 모델에서 수동으로 삭제할 수 있습니다.
이것은 나를 위해 문제를 해결했습니다. 다른 사람에게 도움이되기를 바랍니다.
전체 모델을 다시 생성하거나 모델에서 데이터베이스를 다시 생성하지 않고 데이터베이스를 수정하려면 Visual Studio를 통해 EDMX 다이어그램의 속성을 수정 한 다음 Visual Studio에서 제공하지 않는 매핑을 수동으로 조정하는 것이 가장 쉽고 안전합니다. 액세스.
오류는 줄 번호를 제공합니다.
569 줄에서 시작하는 조각 매핑 문제
텍스트 편집기에서 edmx 파일을 열고 해당 줄로 이동하면 수정이 필요한 항목이 분명해집니다. 다음과 같은 섹션이 있습니다.
<EntityTypeMapping TypeName="YourModel.YourType">
<MappingFragment StoreEntitySet="YourType">
<ScalarProperty Name="PropertyName1" ColumnName="DatabaseColumn1" />
<ScalarProperty Name="PropertyName2" ColumnName="DatabaseColumn2" />
...
</MappingFragment>
</EntityTypeMapping>
필요한 각 속성 / 열 이름에 대한 노드가 있는지 확인하고 모든 속성이 <EntityType Name="YourTable">edmx 문서의 맨 위에 있는 섹션 에도 나열되어 있는지 확인하십시오.
모든 쿼리가 저장 프로 시저로 작성되고 모델을 채우려는 경우 저에게 적합한 복잡한 유형으로 전환 할 수 있습니다.
복합 유형을 만드는 방법 :
- 문제가있는 Entity Generated 클래스의 이름을 edmx 파일에서 아직 사용하지 않는 이름으로 수동으로 변경합니다.
- 모델 브라우저 창을 선택하고 새 복합 유형을 마우스 오른쪽 버튼으로 클릭 / 추가합니다.
- 원본 모델의 속성을 복합 유형에 복사 / 붙여 넣기합니다.
저장 프로 시저를 복합 유형에 매핑합니다.
누군가에게 도움이되기를 바랍니다.
다이어그램에서 테이블을 제거하고 다시 추가하지 않고이를 수행하는 또 다른 대안은 테이블 매핑 옵션을 사용하는 것입니다.
- 모델 브라우저로 이동
- 테이블 이름을 마우스 오른쪽 버튼으로 클릭하십시오.
- Tablle 매핑 선택
- Visual Studio는 테이블 열과 일치하거나 누락 된 EF 속성이있는 창을 표시합니다.
- 누락 된 속성에 적절한 열 선택 / 일치
내 엔터티 중 하나에서 속성 이름을 바꾼 후에도 동일한 문제가 발생했습니다.
내 엔터티의 속성과 테이블의 해당 열 간의 매핑이 설정되지 않았 음을 알았습니다.
모델에서 엔티티를 마우스 오른쪽 버튼으로 클릭하고 "테이블 매핑"을 선택하여 편집기를 사용하여이를 설정할 수 있습니다. 속성이 데이터베이스의 열에 매핑되었는지 확인합니다.
편집 : 새 클래스를 생성하기 위해 tt 파일을 다시 실행해야했습니다. (다른 프로젝트에 참여한 이후 였을까요?)
xml 파일 (edmx)을 검토 한 후 모델을 다른 프로젝트로 이동하고 모든 것이 정상임을 확인한 후 Visual Studio를 닫고 열고 다시 컴파일하기로 결정한 다음 오류가 사라집니다.
'Program Club' 카테고리의 다른 글
| Maven pom을 사용하여 jar 파일을 특정 디렉토리에만 다운로드하는 방법은 무엇입니까? (0) | 2020.11.01 |
|---|---|
| Linux 콘솔에서 어떻게 나누나요? (0) | 2020.10.31 |
| Eclipse Kepler에서 코드 지원 (ctrl + space)이 작동하지 않습니다. (0) | 2020.10.31 |
| Visual Studio 2013에서 Sass를 사용하는 방법 (0) | 2020.10.31 |
| Android : Volley를 사용하여 서버의 메시지 오류를 어떻게 처리합니까? (0) | 2020.10.31 |
