2010-02-11 2 views
3

Je me bats avec les correspondances pour les tables SQL suivantesproblème de cartographie NHibernate Fluent: beaucoup à beaucoup d'auto rejoindre avec des données supplémentaires

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

Idéalement Id comme une propriété sur le poteau appelé relatedPosts comme

Dictionary <RelationType,IList<Post>> 

Mais à la minute Id se contenter d'une propriété sur le poste avec un

IList<PostRelation>. 

I s uccessivement utilisé beaucoup à plusieurs pour obtenir des publications connexes, mais cette méthode perd les données supplémentaires.

Toutes les suggestions ??

Répondre

4

I Enfin trouvé une solution après de nombreuses recherches. Donc, je l'afficherais au cas où il pourrait aider quelqu'un d'autre dans le futur. Comme PostRelation avait des données supplémentaires, il devait être une entité à part entière.

--- 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(); 
Questions connexes