自我引用Fluent NHibernate自动化中的多对多关系

时间:2011-03-10 15:10:47

标签: c# .net nhibernate 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 个答案:

答案 0 :(得分:2)

绝对有可能。您只需要创建覆盖

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

告诉自动映射配置,您的替换将包含这些配置。

编辑:已更新,包括父键和子键列