2010-02-11 121 views
3

我與映射掙扎以下SQL表流利的NHibernate映射問題:多對多自加入額外的數據

|Post    |   |PostRelation  | 
    |------------------|   |-----------------| 
    |PostId   |1--------*|ParentPostId  | 
    |---other stuff--- |1--------*|ChildPostId  | 
    |     |   |RelationType  | 

理想編號喜歡叫relatedPosts上發表財產

Dictionary <RelationType,IList<Post>> 

但在最後一分鐘,剛剛解決一個財產對郵政與

IList<PostRelation>. 

我s成功地使用了多對多來獲得相關帖子,但是這種方法失去了附加數據。

有什麼建議?

回答

4

我終於找到了一個解決方案,經過很多研究。所以儘管我會張貼它,以防將來幫助其他人。由於PostRelation有其他數據,因此它需要成爲一個實體。

--- PostRelationMap

 Id(x => x.Id, "PostRelationId").GeneratedBy.Identity(); 

     References(x => x.ParentPost, "ParentPostId") 
      .ForeignKey("FK_PostRelation_ParentPost") 
      .Fetch.Join() 
      .LazyLoad(); 

     References(x => x.ChildPost, "ChildPostId") 
      .ForeignKey("FK_PostRelation_ChildPost") 
      .Fetch.Join() 
      .LazyLoad(); 

     Map(x => x.RelationshipType).CustomType<int>().Not.Nullable(); 

--- PostMap

HasMany(x => x.ChildPosts) 
      .Access.CamelCaseField(Prefix.Underscore) 
      .Cascade.AllDeleteOrphan() 
      .KeyColumn("ChildPostId") 
      .LazyLoad();