流畅的nhibernate映射问题:多对多自我加入其他数据

时间:2010-02-11 08:54:52

标签: fluent-nhibernate nhibernate-mapping many-to-many

我正在努力使用以下sql表的映射

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

理想情况下,我喜欢将帖子称为relatedPosts的属性

 Dictionary <RelationType,IList<Post>>

但是在那一刻,我只是在

的帖子上找到了一个房产
  IList<PostRelation>.

我成功地使用了多对多来获取相关帖子,但这种方法丢失了附加数据。

有什么建议吗?

1 个答案:

答案 0 :(得分: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();