2011-03-10 53 views
0

標題幾乎可以解釋這一切,我有一個成員對象,引用'朋友'也是類型成員。自我引用Fluent NHibernate自動映射中的多對多關係

public class Member : Entity 
    { 
     public Member() 
     {    
      Friends = new List<Member>(); 
     } 

     public virtual IList<Member> Friends 
     { 
      get; set; 
     } 
    } 

架構生成工具使它成爲1:n的關係,同時它應該是一個N:N的關係即列被添加到稱爲member_id成員表,並創建沒有連接表。

有沒有什麼辦法可以使自我引用Fluent NHibernate中的多對多關係?

回答

1

絕對有可能。你只需要創建一個覆蓋

public class MemberOverride : IAutoMappingOverride<Member> 
{ 
    public void Override(AutoMapping<Member> mapping) 
    { 
     mapping.HasManyToMany(m => m.Friends) 
       .Table("MemberFriendsLinkTable"); 
       .ParentKeyColumn("MemberId") 
       .ChildKeyColumn("FriendId"); 
    } 
} 

只要告訴自動映射配置你的覆蓋將包括這些。

編輯:更新,包括父母與子女鍵列

+0

感謝您的快速反應。我添加了你的代碼,並且我得到了「NHibernate.MappingException:爲集合映射重複列:Proj.BO.Member.Friends column:Member_id」有什麼辦法可以解決這個問題嗎? – Eitan 2011-03-13 15:09:33

+0

@Eitan,你知道了嗎? – Vadim 2011-03-14 14:17:37

+0

你弄明白了嗎? – 2011-03-26 13:27:55