2011-03-10 55 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