У меня есть несколько объектов, хранящихся в одном индексе поиска NHibernate, в надежде, что я смогу запросить их всех сразу. Вариант использования - это простая страница поиска, которая возвращает смешанные результаты. Так, например, код может выглядеть следующим образом:Полиморфные запросы с NHibernate Search
public interface ISearchable {}
[Indexed(Index = "TheIndex")]
public class SearchableEntityA : ISearchable
{
// Some [Field]s
}
[Indexed(Index = "TheIndex")]
public class SearchableEntityB : ISearchable
{
// Some other [Field]s
}
Это все показатели в порядке, и, конечно, запрашиваемых в сыром NHibernate так:
session.CreateCriteria<ISearchable>().List<ISearchable>();
У меня есть некоторые поля на ISearchable, но на них не указаны ссылки NHibernate.
Моя надежда было то, что я мог бы просто сказать:
var query = "some keyword";
fullTextSession.CreateFullTextQuery<ISearchable>(query).List<ISearchable>();
и получить список ISearchables, содержащий результаты различных различных объектов. Однако реальность такова, что она выбрасывает NHibernate.HibernateException: Not a mapped entity: NetComposites.Model.ISearchable
.
Итак, что является самым простым способом добиться чего-то похожего на полиморфные запросы с помощью NHibernate Search?