2011-05-09 94 views
0

我正在使用節點/鏈接結構,但我在使用流利的nhibernate映射它時遇到了問題。在fluent-nhibernate中映射多對二的關係

這是我正在使用的類的簡化。


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從映射中創建數據庫模式。

我在問什麼,我該如何創建一個多對二關係?

+1

那麼你的問題到底是什麼?你如何映射鏈接,節點或兩者?你還在做自動映射還是有現有的數據庫表你正在使用(如果是這樣的張貼表)? – 2011-05-10 16:52:56

+0

我已經更新了這個問題,我希望它能讓事情變得清晰:) – 2011-05-10 22:29:10

回答

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); 
    } 
} 

再次,這是略高於一簡要概述。如果您想要級聯任何創建/更新/刪除操作,您可能需要其他映射屬性。