【发布时间】:2011-07-14 19:48:06
【问题描述】:
标题几乎解释了这一切,我有一个 Member 对象,它引用同样是 Member 类型的“朋友”。
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 中创建一个自引用多对多关系?
我尝试使用之前得到的覆盖作为答案:
public class MemberOverride : IAutoMappingOverride<Member>
{
public void Override(AutoMapping<Member> mapping)
{
mapping.HasManyToMany(m => m.Friends)
.Table("MemberFriendsLinkTable");
}
}
但我收到错误消息:
“NHibernate.MappingException:集合映射中的重复列:Proj.BO.Member.Friends 列:Member_id”
谢谢
编辑:我找到了答案,那就是:
mapping.HasManyToMany(m => m.Friends).ParentKeyColumn("Member_Id").ChildKeyColumn("Friend_Id")
.Table("MemberFriendsLinkTable").Inverse().Cascade.SaveUpdate();
【问题讨论】:
-
您可以回答自己的问题。继续,将您的解决方案放在答案中并接受它。
标签: c# .net nhibernate fluent-nhibernate