Мне нужно смоделировать дружеские отношения с Fluent NHibernate.Моя модель компании имеет List<Company> Related
со связанными компаниями.Отношения между компаниями смоделированы в моей базе данных в таблице related
, которая выглядит следующим образом:
customer_id | related_id
Оба столбца являются внешним ключом PK в моей таблице customers
.
Проблема в том, что отношения сохраняются только один раз для каждой пары (вы называете это двунаправленным?).
Я могу изменить структуру таблицы, если онапроще решить по-другому.
Мне нужно отобразить Fluent NHibernate так, чтобы, когда я делаю customer.Related()
, он генерирует запрос вроде:
SELECT * FROM companies LEFT JOIN related ON customer_id = id OR related_id = id
Я пыталсяЧтобы отобразить это несколькими различными способами, я пробовал следующее:
HasManyToMany(x => x.Related)
.Inverse()
.ParentKeyColumn("customer_id")
.ChildKeyColumn("related_id")
.Table("relations")
.Cascade.All();
Однако, это (конечно) только сопоставление, когда customer_id совпадает.
Как мне решитьthis?
Редактировать: Я думаю, что это похоже на Свободный NHibernate: Как создать двунаправленное отображение один-ко-многим? , но это мне мало помогает.