Nhibernate: установите отношения «многие ко многим», чтобы отобразить их как «один к одному» - PullRequest
2 голосов
/ 03 марта 2009

У меня есть два предмета A и B, которые имеют однонаправленное отношение один к одному. (А имеет один В)

В базе данных они представлены ATable и BTable, и они связаны между собой ABTable. (Из настройки базы данных выясняется, что существует отношение многие ко многим, но это не так, это было сделано по причинам нормализации).

Проблема связана с этой настройкой, я только смог заставить NHibernate отобразить это как отношение многие-ко-многим между сущностями. Есть ли способ заставить сущностей иметь отношения один-к-одному?

Лучшее, что я могу придумать, - это оставить отношение «многие ко многим», а затем иметь два свойства в объекте «А», одно из которых возвращает список «В», которое удовлетворяет отображению, а второе - не сопоставленное свойство, которое получит первую букву B из списка, чтобы удовлетворить мою заявку. - но это кажется неоправданным.

Ответы [ 2 ]

1 голос
/ 04 марта 2009

Вы уверены, что имеете в виду один на один? У меня было так много людей, спрашивающих один-к-одному, когда они действительно означают .

много-к-одному.

В любом случае, если не считать изменения схемы, самое простое - это то, что вы предложили; однако, чтобы сделать его немного чище, вы можете сделать коллекции частными, чтобы вы раскрыли только два свойства, которые выбирают первый элемент. Вы можете увидеть различные методы в Fluent NHibernate для отображения частных свойств в вики .

0 голосов
/ 03 марта 2009

Вы можете попробовать комбинировать сопоставления join-table с one-to-one различными способами. Отображение join-table позволяет сохранить один класс в нескольких таблицах, имеющих отношение один к одному.

...