2011-05-09 3 views
0

나는 노드/링크 구조로 작업하고 있지만 유창한 nhibernate를 사용하여 매핑하는 데 문제가 있습니다.유창한 nhibernate에서 다 대 2 관계 매핑하기

이것은 내가 사용하고있는 클래스의 단순화입니다.


class Node 
{ 
    public virtual IList Links { get; set; } 
} 

class Link 
{ 
    public virtual Node StartNode { get; set; } 
    public virtual Node EndNode { get; set; } 
} 

노드는 연결된 많은 링크를 가질 수 있습니다. 링크는 두 개의 노드에 연결되어야합니다.

그리고 어떤 노드가 시작 노드와 끝 노드인지 알아야하므로 특정 노드 여야합니다. 그래서 목록을 사용하여 두 개의 노드로 제한 할 수 없습니다.

누구든지이 문제를 발견하고 해결책을 찾았습니까?

편집 : Clearifying 질문
내가 자동 매핑을 사용하지 않는 , 나는 explisit 매핑 방법을 사용하고 있습니다 : 참고 문헌, hasMany의 및 HasManyToMany을. 본질적으로 입문 튜토리얼에있는 메소드를 따른다 : http://wiki.fluentnhibernate.org/Getting_started#Your_first_project

나는 데이터베이스가 없기 때문에, nhibernate를 사용하는 매핑으로부터 데이터베이스 스키마를 만들 것이다.

내가 묻는 것은 다 대 2 관계를 어떻게 만듭니 까?

+1

정확히 무엇이 당신의 질문입니까? 링크, 노드 또는 둘 모두를 매핑하는 방법은 무엇입니까? 또한 automapping을하고 있습니까? 아니면 기존 테이블을 사용하고 있습니까? –

+0

질문을 업데이트했습니다. 문제가 해결되기를 바랍니다 :) –

답변

1

음이 둘의 관계에 대한 특별 많은 아니지만 무엇을 당신이 아마 것은이 같은 것입니다 :

public class NodeMap : ClassMap<Node> 
{ 
    public NodeMap() 
    { 
     //Id and any other fields mapped in node 

     HasMany(x => x.Links); 
    } 
} 

public class LinkMap : ClassMap<Link> 
{ 
    public LinkMap() 
    { 
     //Id and any other fields mapped in node 

     References(x => x.StartNode); 
     References(x => x.EndNode); 
    } 
} 

다시이 위의 단지에 대한 간단한 개요입니다. 예를 들어 생성/업데이트/삭제 작업을 연쇄 적으로 처리하려는 경우 추가 매핑 속성이 필요할 수 있습니다.

관련 문제