2010-12-15 2 views
0

아래 스크린 샷에는 내 모델의 엔티티 (URL)가 나와 있습니다. ParentId 필드는 자체 참조 FK (Url.Id를 가리킴)입니다. 스크린 샷 하단에서이 탐색을 볼 수 있습니다.자체 참조 FK 이상하게 생성하기

alt text

내 SQL에서

내가에서 EDMX를 생성 내 DB, 자기 참조 FK라고 FK_Urls_Parent :

-- Creating foreign key on [ParentId] in table 'Urls' 
ALTER TABLE [Urls] 
ADD CONSTRAINT [FK_Urls_Parent] 
    FOREIGN KEY ([ParentId]) 
    REFERENCES [Urls] 
     ([Id]) 
    ON DELETE NO ACTION ON UPDATE NO ACTION; 

내 질문

은 다음과 같습니다

  1. 왜 EF가 그 하나의 FK에서 Urls1과 Url1을 생성 했습니까? Url1은 'FromRole'Urls1 인 0 또는 1 속성입니다. Urls1은 'FromRole'Urls 'ToRole'Urls1입니다. EF가 Url 테이블과 완전히 동일한 탐색 속성을 만드는 것처럼 보입니다. 왜 이렇게 할 것인가? 내가 원하는 것을 생성하기 위해 무언가를 할 수 있습니까? 원하는 탐색 속성 : Urls1?
  2. 좋아요, 그렇게 중요하지는 않지만, FK 이름이나 DB의 내용을 기반으로 Navigation 속성의 이름을 제어 할 수 있습니까? 나는 그것이 'Url1'이라는 이름을 싫어한다. 나는 'Parent'를 선호하지만, 모델을 재생성 할 때마다 디자이너에서 수동으로 변경하고 싶지는 않습니다.

감사합니다.

답변

2

관계의 양측을 모델링합니다. 즉, 속성 중 하나는이 항목의 ParentId에 의해 가리키는 항목이됩니다. 다른 하나는 해당 항목의 ParentId 필드를 가리키는 항목입니다. 관계 속성에서 한쪽을 사용하지 않거나 이해하기 위해 이름을 바꿀 수 있습니다. 예를 들어, ParentUrlChildUrls입니다.

프로그램을 직접 열지 않고 속성 관계 대화 상자로 이동하는 방법을 100 % 확신 할 수는 없지만 지금은 할 수 없습니다. 나는 그것이 링크가 선택되었을 때 (기본적으로) 오른쪽 아래 속성 창에 나타나는 것을 알고있다.

이 변경을 모델 재생성을 통해 영구적으로 유지하는 한,이 작업을 수행 할 방법이 없습니다. 잘만되면 누군가 다른 사람을 알 것이다. 나에게 많은 시간을 절약 할 수 있기 때문이다!

+1

단일 상위 엔터티에 여러 자식이 있으므로 ChildUrls가됩니다. –

+0

@Hightechrider 물론. 결정된. – jdmichal

+0

설명해 주셔서 감사합니다. – Chad