Выставление идентификатора из отношения 1: n / дерева (NH) - PullRequest
0 голосов
/ 06 июня 2009

Я пытаюсь оптимизировать древовидную структуру для моей категории-модели. Категория-модель имеет родительское свойство и коллекцию детей.

Обычно я делаю это, загружая все категории (звучит плохо, но не более 100 узлов). Затем дерево собирается вручную путем индексации всех категорий по идентификатору, а затем путем поиска родительского элемента по категориям парентид. Грязно, но очень быстро. У меня проблема в том, что я не знаю, как получить / отобразить ParentID из родительского отношения при использовании nhibernate.

Скажите, у меня есть это отображение в беглом nhibernate:

        References(cat => cat.Parent,"Parent_id")
            .FetchType.Select()
            .WithForeignKey("Category_ParentCategory");

Тогда у меня вопрос: как я могу получить или отобразить парентид для данной категории, не загружая Родителя из базы данных?

А также, кто-нибудь имеет практический опыт картирования деревьев, или пробовал http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/05/14/how-to-map-a-tree-in-nhibernate.aspx?

1 Ответ

1 голос
/ 07 июня 2009

Вы можете сопоставить ParentId как свойство в дополнение к отображению родительского объекта. Возможно, вы захотите отобразить ParentId как доступный только для чтения и поместить логику в установщик, чтобы Parent установил ParentId.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...