Entity Framework-수동으로 탐색 속성 추가


115

데이터베이스에서 Entity Framework Model (4.0)을 생성했습니다. 데이터베이스를 디자인하지 않았고 스키마를 제어 할 수 없었지만 외래 키 제약 조건이 정의되지 않은 테이블이 몇 개 있지만 암시 적 관계가 정의되어 있습니다.

예를 들면 :

다음 열이있는 People이라는 테이블이 있습니다. GenderID RaceID

Gender 및 Race에 대한 테이블이 있지만 People 테이블에는 외래 키가 없습니다.

모델을 가져올 때 이러한 관계에 대한 탐색 속성이 추가되지 않았습니다. 수동으로 추가하려고했지만 From Role 및 To Role이 비활성화되어 있습니다. 직접 관계를 추가하는 방법을 잘 모르겠습니다. 어떻게해야합니까?

답변:


181

네-그렇게 간단하지 않습니다.

수행하는 작업은 다음과 같습니다.

1-디자이너를 마우스 오른쪽 버튼으로 클릭하고 추가 -> 연결

2-연결 및 카디널리티 설정 (People * .. 1 Gender, People * .. 1 Race)

3- 모델 브라우저 로 이동 -> 연관

4-새로 생성 된 연결을 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭합니다.

5-여기서 키 및 캐스케이드 옵션에 대한 끝점을 설정해야합니다. 엔드 포인트가 올바른지 확인하십시오. 암시 적 탐색 속성에 대한 참조 제약 조건을 여기서 설정할 수도 있습니다.

6-탐색 속성을 관련 테이블 / 필드에 매핑합니다.

7-모델을 확인하고 손가락을 교차하십시오.

도움이 되었기를 바랍니다.


20
내 머리카락의 남은 부분을 저장하기 위해 +1. # 6을 추가하려면 연결 속성 페이지의 참조 제한 설정에서 외래 키 열을 변경해야합니다. [...]을 눌러 참조 제약 조건 대화 상자를 열고 디자이너가 종속 속성 아래의 자식 테이블에 연결 한 더미 필드를 변경합니다.
Joel Brown

8
또한 자식 테이블의 속성으로 이동하여 디자이너가 추가 한 더미 필드를 삭제해야합니다 (하위 테이블의 실제 필드에 매핑되지 않음).
Joel Brown

2
View의 경우 기본 키 정의가 올바른지 확인하십시오 (관련 필드를 마우스 오른쪽 단추로 클릭하고 속성에서 EntityKey로 표시). 그렇지 않으면 '종속 역할이 키 속성을 참조하기 때문에 관계의 역할에서 다중성이 유효하지 않습니다 ...'가 표시 될 수 있습니다.
Mikl X

1
# 2에서 "엔티티에 외래 키 속성 추가"확인란의 선택을 취소 할 수 있습니다. 정말로 필요하지 않은 경우 불필요한 두통이 발생합니다.
암호화

데이터베이스에서 모델을 다시 업데이트하면 스캐 폴딩 된 엔터티가 수동으로 추가 된 연결을 유지합니까?
voodoo_patch

45

나는 우연히 이 블로그 게시물 나를 위해 큰 일을 다음과 같은 솔루션을 제안, (불행하게도 내 상황에서 작업에 RPM1984 년대를 가져올 수 없습니다).

  1. 디자이너 배경 오른쪽 클릭 상황에 맞는 메뉴를 통해 연결 추가
  2. 연결 설정 (외래 키 생성을 선택 취소해야 함)
  3. 연결을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하십시오.
  4. ...Referential Constraint 버튼을 클릭하십시오.
  5. 내 키 간의 관계를 설정합니다.
  6. 확인 (디자이너 상황에 맞는 메뉴에서)
  7. ???
  8. 이익!

4
+1 Point 4는 RPM194 답변으로 간과했습니다.
Hugo Logmans
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.