Если я понимаю правильно, вы создаете таблицу реф, потому что вы хотите, чтобы ссылка на быть обнуляемым. Если это так, вам не нужна таблица ссылок. Просто установите FK в таблице b как значение NULL. Тогда вы можете сопоставить его простой ссылкой. Тогда вы бы таблицы, как это:
- таблица А с 2-мя столбцами: идентификатор и имя
- таблицы B с 2-мя колонками: ид, имя и помощи (Nullable)
И вы можете карта это так:
public class AMap : ClassMap<A>
{
public AMap()
{
Id(x => x.Id);
Map(x => x.Name);
}
}
public class BMap : ClassMap<B>
{
public BMap()
{
Id(x => x.Id);
Map(x => x.Name);
References(x => x.RefToA);
}
}
Update
Невозможно сопоставить это, как вы хотите, в nhibernate (и никакое другое orm, если на то пошло). Причина этого довольно проста: она нарушает множество правил, и никогда не бывает причин для этого. Правильный способ сделать это - иметь нулевую ссылку fk в таблице b. Вот как вы представляете ссылку в базе данных sql. Это просто плохой дизайн для использования многих-ко-многим, когда вы имеете в виду один-ко-многим, и это, безусловно, даст вам проблемы позже.
Зачем нужна таблица ref (AB), если вы хотите, чтобы один-ко-многим? –
потому что большую часть времени, почти всегда, что столбец FK, созданный одним-ко-многим, будет равен нулю – Omu
. Тогда почему таблица table не имеет следующий столбец 'AId REFERENCES A NULL'? –