Быстрая проблема отображения nhibernate: многие ко многим самостоятельно присоединяются с дополнительными данными - PullRequest
3 голосов
/ 11 февраля 2010

Я борюсь с сопоставлениями для следующих таблиц SQL

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

В идеале я бы хотел, чтобы свойство поста под названием relatedPosts имело значение

 Dictionary <RelationType,IList<Post>>

Но в тот момент, когда я просто согласился на собственность на почту с

  IList<PostRelation>.

Я успешно использовал многие ко многим, чтобы получить похожие сообщения, но этот метод теряет дополнительные данные.

Есть предложения ??

1 Ответ

4 голосов
/ 15 февраля 2010

Я наконец нашел решение после долгих исследований. Так что, хотя я бы опубликовал это на случай, если это может помочь кому-то еще в будущем. Поскольку у 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...