Есть ли способ сделать обратный поиск в Nhibernate? - PullRequest
3 голосов
/ 18 июля 2010

У меня есть две таблицы:

  1. Компоненты
  2. ComponentDependencies

ComponentDependencies имеет два столбца: ComponentId и ComponentDependencyID . (оба внешних ключа в Id поле Component таблица.

я использую беглый nhiberate, и у меня есть компонент объекта, имеющий:

 public virtual IList<ComponentDependency> Dependencies { get; set; }

и в моем классе ComponentMap у меня есть карта nhibernate:

HasMany(x => x.Dependencies)
            .AsBag().Inverse();

Поэтому, когда у меня есть объект компонента, я могу увидеть список его зависимостей.

Есть ли у меня какое-то дополнительное свойство, имеющее "обратный" список. Я имею в виду, что мне нужно свойство с именем "DependentOf", которое также является

  IList<ComponentDependency>

у которого есть все элементы, где этот текущий компонент является зависимым компонентом в отношениях?

1 Ответ

1 голос
/ 18 июля 2010

Это похоже на проблему спецификации материалов с компонентами, имеющими отношение «многие ко многим» к себе через таблицу ссылок ComponentDependencies.Вы можете отобразить оба направления отношений, чередуя столбец родительского ключа:

HasManyToMany(x => x.Dependencies).Table("ComponentDependencies")
    .ParentKeyColumn("ComponentId").ChildKeyColumn("ComponentDependencyId");

HasManyToMany(x => x.DependentOf).Table("ComponentDependencies")
    .ParentKeyColumn("ComponentDependencyId").ChildKeyColumn("ComponentId");
...