2010-11-26 68 views
3

有了这个类和映射:功能NHibernate:自我指涉多对多

Public class Something 
{ 
    public int Id; 
    public IList<Something> Similarthings { get; set; } 
} 

public class SomtehingMapping 
    { 
     public SomtehingMapping() 
     { 
      Map(x => x.Id); 
      HasManyToMany(x => x.Similarthings) 
       .Table("SomethingsToSimilarthings") 
       .ParentKeyColumn("SomethingA_Id") 
       .ChildKeyColumn("SomethingB_Id") 
       .Cascade.All(); 
     } 
} 

你这样结束了:

Table SomethingsToSimilarthings 
------------------------------- 
SomethingA_Id SomethingB_Id 
111    222 
222    111 

有没有定义这个映射,使任何方式的双向关系只用一个数据库行来表示?

+0

你解决这个问题? – alexn 2010-12-20 14:41:49

回答

1

您是否尝试过建立映射属性真正这样呢?

public class SomtehingMapping 
    { 
     public SomtehingMapping() 
     { 
      Map(x => x.Id); 
      HasManyToMany(x => x.Similarthings) 
       .Inverse() 
       .Table("SomethingsToSimilarthings") 
       .ParentKeyColumn("SomethingA_Id") 
       .ChildKeyColumn("SomethingB_Id") 
       .Cascade.All(); 
     } 
} 

另一种方法是明确定义的关联的另一边,并标记作为inverse="true"

+0

还没有尝试过。很难想象在这种情况下Inverse = true意味着什么。我会尝试并回来。 – UpTheCreek 2010-11-27 11:12:26