Я обычно запрашиваю интерфейсы, используя DetachedCriteria в NHibernate:
DetachedCriteria crit = DetachedCriteria.For<IParent>();
И это прекрасно работает.
Теперь я хочу создать подзапрос для дочернего объекта следующим образом:
DetachedCriteria subcrit = DetachedCriteria.For<IChild>();
и добавьте его к критериям, подобным этому (вроде как p.Child на самом деле псевдоним, но я упростил)
crit.Add(LambdaSubquery.Property<IParent>(p => p.Child.ChildID).In(subcrit));
Это работает, если мой DetchedCriteria для ребенка:
DetachedCriteria subcrit = DetachedCriteria.For<Child>();
но не для интерфейса (как указано выше). В этом случае я получаю исключение:
NHibernate.MappingException: No persister for: Domain.Name.Space.IChild
Это то, что должно быть, или мне не хватает какой-либо конфигурации?