Как получить доступ к NHibernate.IQueryOver <T, T> в ActiveRecord? - PullRequest
0 голосов
/ 23 апреля 2011

Я использую прежде всего DetachedCriteria, у него есть статический метод For для создания экземпляра.Но, похоже, IQueryOver более выгоден, я хочу его использовать.Обычный способ получить экземпляр IQueryOver - это Isession.Query, и я хочу получить его с ActiveRecord, кто-нибудь знает способ?Спасибо.

Ответы [ 2 ]

3 голосов
/ 25 апреля 2011

Сначала QueryOver.Of возвращает экземпляр QueryOver , затем вы создаете условия с помощью API QueryOver.

После этого query.DetachedCriteria возвращает эквивалентный DetachedCriteria, который можно использовать с ActiveRecord изящно.

var query = QueryOver.Of<PaidProduct>()
.Where(paid =>
       paid.Account.OrderNumber == orderNumber
       && paid.ProductDelivery.Product == product)
       .OrderBy(paid=>paid.ProductDelivery.DeliveredDate).Desc;
return ActiveRecordMediator<PaidProduct>.FindAll(query.DetachedCriteria);
1 голос
/ 23 апреля 2011

Насколько я знаю, нет прямой поддержки QueryOver.Я рекомендую вам создать элемент в трекере проблем , затем разветвить репозиторий и реализовать его.Я бы начал с рассмотрения реализации ActiveRecordLinqBase , она должна быть похожей.Но вместо отдельного класса вы можете просто реализовать это в ActiveRecordBase.Затем оберните его в ActiveRecordMediator так, чтобы он также мог использоваться в классах, которые не наследуют ActiveRecordBase.

...