У меня таблица выглядит следующим образом:
CREATE TABLE [dbo].[Order](
[OrderID] [int] IDENTITY(1,1) NOT NULL,
[UserID] [int] NOT NULL,
[ProductID] [int] NOT NULL,
[OrderDate] [datetime] NOT NULL,
[UnitPrice] [money] NOT NULL,
[Quantity] [float] NOT NULL,
[Comment] [nvarchar](200) NULL,
) ON [PRIMARY]
Я использовал NHibernate для построения поиска по истории заказов, в то же время я также использую NHibernate.Search для поиска по полю комментария (из-за причины полнотекстового поиска).
Я мог бы создать запрос Linq для поиска по полям UserID, ProductID, OrderDate и т. Д.:
IQueryable<Order> orders = orderRecordRepository.GetList();
orders = orders.Where(o => o.User.Id == 1 && o.Product.Id == 100 &&
o.OrderDate <= DateTime.Now);
Теперь у меня возникает вопрос, что если мне нужно включить поиск по полю комментариев, мне нужносоздать еще один полнотекстовый сеанс, например:
IFullTextSession fullTextSession = Search.CreateFullTextSession(this.session);
return fullTextSession.CreateFullTextQuery<T>(fulltextQuery).List<T>();
Поведение первого запроса, похоже, изолированно от второго.если мне нужно найти порядок с UserID, ProductID, OrderDate + несколько текстов внутри комментариев, я должен выполнить 2 отдельных поиска, чтобы получить 2 разных списка, а затем найти перекрывающийся результат, чтобы получить окончательный список.Это кажется очень неэффективным.
Мне просто интересно, какова ваша практика в этой ситуации.