Отображение дочерней коллекции без индексации на основе первичного ключа базы данных или использования пакета - PullRequest
1 голос
/ 11 марта 2010

У меня есть отношения родитель-потомок, которые я пытаюсь отобразить в Fluent Nhibernate:

[RatingCollection] -> [Rating]

Коллекция рейтингов содержит:

  • ID (идентификатор, сгенерированный базой данных)
  • Код
  • Имя

Рейтинг имеет:

  • ID (идентификатор, сгенерированный базой данных)
  • ИД коллекции рейтингов
  • Код
  • Имя

Я пытался выяснить, какая перестановка HasMany имеет смысл здесь.То, что у меня есть сейчас:

HasMany<Rating>(x => x.Ratings)
    .WithTableName("Rating")
    .KeyColumnNames.Add("RatingCollectionId")
    .Component(c => { c.Map(x => x.Code);
                      c.Map(x => x.Name); );

Это работает с точки зрения CRUD, но, поскольку это мешок, он в конечном итоге удаляет содержимое рейтинга каждый раз, когда я пытаюсь выполнить простое обновление / вставку в свойство Ratings.Мне нужна индексированная коллекция, но без использования сгенерированного идентификатора базы данных (который сейчас находится в шестизначном диапазоне).

Любые мысли о том, как я могу получить индексированную коллекцию с нуля (так что я могуentity.Ratings [0] .Name = "foo"), который позволил бы мне изменить коллекцию без удаления / повторной вставки всего этого при сохранении?

1 Ответ

0 голосов
/ 11 марта 2010

Прежде всего, вы используете старую версию Fluent NHibernate; WithTableName устарел в пользу Table.

По списку можно получить доступ к IList, поэтому Bag должен работать. Я не уверен, почему вы указали рейтинг как компонент или каков эффект от этого. Это стандартное отображение коллекции:

HasMany(x => x.Ratings).KeyColumn("RatingCollectionId")
    .Cascade.AllDeleteOrphan().Inverse()
    .AsBag().LazyLoad();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...