У меня есть 2 таблицы в моей базе данных:Как я могу сопоставить эту связь 1: 1 с использованием свободного nhibernate, не требуя дополнительного кода принудительного применения на уровне приложения или отображения 1: много?
- Таблица Team (Id, Name, WebsiteId (обнуляемым))
- WebSite Таблица (Id, Name)
веб-сайт может быть выровнен с командой, но не обязательно. Команда может быть выровнена с веб-сайтом, но не обязательно. Таким образом, отношения между ними являются как одно, так и без них с обеих сторон.
Первоначально Единственный способ, которым я мог видеть, делать это, чтобы создать один ко многим картографирования, делая это:
WebsiteMap класс
HasMany(x => x.Teams).AsBag().Inverse().Fetch.Select().BatchSize(50);
TeamMap класс
References(x => x.WebSite).Nullable();
но чтобы скорректировать применение сопоставления 1: 1, я должен сделать это в своем классе веб-сайта. У меня есть этот код:
public virtual Team Team
{
get
{
return Teams.FirstOrDefault();
}
}
Как я могу правильно описать эту взаимосвязь в самом слое отображения, чтобы избежать необходимости этого преобразования?
Главное, что одна из этих таблиц не является подчиненной другой. Все примеры, которые я вижу в Интернете, с 1: 1 сопоставлениями с плавным nhibernate, предполагают, что вторая таблица не будет существовать без первой (например, таблицы User и таблицы UserPreferences), но это не моя ситуация.
В моем примере выше, поскольку его значение с нулевым значением с обеих сторон не является ведущим или ведомым?
Каков правильный способ сопоставить это в свободном nhibernate?
Это не только отображение один к одному с обеих сторон обнуляемого колонок для отношений? – starlight54
да, но я не понимаю, как это отвечает на вопрос. – leora
. Ответ на вопрос о том, как сделать «один-к-одному» с помощью Fluent здесь, я предполагаю, что просто добавление 'Nullable()' на обоих концах будет охватывать ваши сценарий. http://stackoverflow.com/questions/6085568/how-to-do-a-fluent-nhibernate-one-to-one-mapping#answers – starlight54