У меня двунаправленная связь «многие ко многим» между EntityA и EntityB, и я использую класс ассоциации EntityABLink, чтобы смоделировать это, потому что есть другие атрибуты об отношениях, которые мне нужно отслеживать.Кроме того, у меня также есть другой класс, который содержит ссылку на определенную связь между EntityA и EntityB, поэтому я рассматриваю класс ассоциации как полноценный объект.
В EntityA у меня есть свойство только для чтения, которое возвращает список связанных объектов EntityB, и, аналогично, в EntityB у меня есть свойство только для чтения, которое возвращает список связанных объектов EntityA.Обратите внимание, что для этих свойств я скрываю тот факт, что ассоциация реализуется через класс ассоциации.(У меня также есть специальные методы для обновления отношений, которые скрывают реализацию.) За кулисами в EntityA и EntityB у меня есть частные коллекции типа EntityABLink.
Поскольку картинка стоит тысячи слов, я уже описал следующее:

(еще раз отметим, что общедоступные свойства только для чтения в EntityA иEntityB не принадлежат к тому же типу, что и частные члены, которые их поддерживают.)
Пока все хорошо.Теперь я хочу сохранить эти объекты в базе данных, используя автоматические переопределения Fluent NHibernate.Когда дело доходит до отображения, мне нравится думать о вышеизложенном, используя это функционально эквивалентное представление:
Из этой диаграммы ясно, что то, что мне действительно нужно, это два двунаправленных одномного отношений.
При отображении вышеизложенного я понимаю, что мне нужно что-то вроде этого:
В переопределении автоматического сопоставления EntityA:
mapping.HasMany<EntityABLink>(Reveal.Member<EntityA>(“_AssociationList”)).Inverse().AsBag().Cascade.SaveUpdate();
mapping.IgnoreProperty(x => x.EntityBList);
В переопределении автоматического сопоставления EntityB:
mapping.HasMany<EntityABLink>(Reveal.Member<EntityB>(“_AssociationList”)).Inverse().AsBag().Cascade.SaveUpdate();
mapping.IgnoreProperty(x => x.EntityAList);
В переопределении автоматического определения EntityABLink:
mapping.References<EntityA>(x => x.EntityA).Not.Nullable();
mapping.References<EntityB>(x => x.EntityB).Not.Nullable();
Однако, когда я пытаюсь это сделать, я получаю следующую ошибку:
"Не удалось найти получатель для свойства '_AssociationList 'в классе' EntityB '. "
У меня должно быть что-то не так с моими отображениями, но я не уверен, что.Есть идеи?