2012-01-13 3 views
0

그래프에서 노드 사이에 많은 관계가 있습니다. 노드 간의 모든 연결은 양방향입니다.EF 네비게이션 속성과의 다 대다 관계

NodeId | NodeName 
    1   A 
    2   B 
    3   C 
    4   D 

그리고 노드 링크의 테이블 :

LeftNodeId | RightNodeId 
    1    2 
    1    4 
    2    3 
    3    4 

당신이 볼 수 있듯이 그래서, 내 그래프는 다음과 같습니다

A - B - C 
|  | 
---D--- 
따라서

나는 노드의 테이블이

이것을 EF 모델로 가져 오면 내 노드 객체에는 두 개의 탐색 속성 (노드 및 노드 1)이 있습니다. 노드에는 "왼쪽"노드가 포함되고 Node1에는 "올바른"노드가 포함됩니다.

제 질문은 SQL 데이터베이스를 설정하여 단일 탐색 속성 만 갖도록하는 것이 가장 좋습니다. 이웃 노드에 대한 "이웃"?

노드 간의 내 관계는 항상 양방향입니다.

답변

1

"불가능합니다". EF는 두 가지 탐색 속성을 별도로 유지해야합니다. 예를 들어 노드가 2 인 경우 속성 하나에 2와 3 사이의 관계가 있고 (왼쪽에 2가 있기 때문에) 두 번째 탐색 속성에는 1과 2 사이의 관계가 포함됩니다 (오른쪽에 2가 있기 때문에).

public IEnumerable<Node> AllRelations 
{ 
    get 
    { 
     return LeftRelations.Concat(RightRelations); 
    } 
} 
+0

감사 라디 :

당신이 아닌 매핑 ​​계산 된 속성을 사용할 수있는 모든 관계를 보여주는 하나의 속성이 필요한 경우

. 따라서 SQL에서 테이블 또는 관계를 설정하는 데 실제로 정말 최적의 방법이 있습니까? – Zac

+0

EF에서는 SQL에 관한 것이 아니라 접합점 해석에 관한 것입니다. –