Сопоставление один-к-одному с Fluent NHibernate не работает - PullRequest
0 голосов
/ 18 ноября 2011

У меня есть 2 таблицы (Labour и LabourPosition).Вместо того, чтобы использовать fki для таблицы LabourPosition из таблицы Labor, я хотел бы использовать объект (theLabourer.LabourPosition.Name вместо getLabourPosition(theLabourer.LabourPositionId).

Я прочитал несколько статей, чтобы сделать это, но они непохоже, не работает для меня ... ошибка, которую я получаю при попытке просмотреть значение свойства LabourPosition: «Не удалось инициализировать прокси - нет сеанса».

Мое сопоставление (ps: LabourPosition невернуть fki к Labour, только в одну сторону): класс LabourMap:

References<LabourPosition>(x => x.LabourPosition, "LabourPositionsId");

И тогда, очевидно, я определил свойство в объекте Labour как:

public virtual LabourPosition LabourPosition { get; set; }

Любые идеи?Помощь будет оценена!

Ответы [ 2 ]

2 голосов
/ 18 ноября 2011

Из беглого отображения документации

HasOne / один-к-одному

HasOne обычно резервируется для особого случая. Как правило, вы бы использовали Отношения отношения в большинстве ситуаций (см .: я думаю, что вы имеете в виду многие-к-одному). Если вы действительно хотите один на один, то вы можете использовать Метод HasOne.

HasOne (x => x.Cover);

Если вы хотите использовать ссылку (как подсказывает ваш код), вам необходимо отобразить обе стороны отношений. Из документации:

HasMany / один-ко-многим

HasMany, вероятно, является наиболее распространенным основанным на коллекциях отношением вы собираетесь использовать. HasMany - «другая сторона» References отношения, и применяется на «одной стороне» (один автор имеет много книги). Теперь давайте наметим авторскую сторону отношений, которые мы начали выше. Нам нужно присоединиться к столу книг, возвращая коллекцию любые книги, связанные с этим автором.

открытый класс Author {public IList Books {get; задавать; }} Мы используйте метод HasMany в конструкторе AuthorMap, чтобы отобразить эту сторону отношений:

HasMany (x => x.Books); Как и в случае со ссылками, внешний ключ по умолчанию Author_id, и вы можете переопределить его с помощью метода KeyColumn или изменить поведение по умолчанию с конвенцией.

Существует несколько типов коллекций, которые вы можете использовать, и все они доступны по вызову HasMany.

Зачем вам нужны отношения один-один, а не просто хранить все столбцы в одной таблице?

0 голосов
/ 18 ноября 2011

В вашем отображении попробуйте

References(x => x.LabourPosition, "LabourPositionsId");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...