Есть ли класс .net для условий запроса, таких как DetachedCriteria в Hibernate, но не полагаться на Hibernate? - PullRequest
0 голосов
/ 11 октября 2010

Я пишу общий интерфейс DAO и сталкиваюсь со сложной общей операцией Query.Операция запроса требует набора условий запроса.Я хотел бы дать интерфейс типа

IList<TEntity> Query(DetachedCriteria criteria);

Но это заставляет интерфейс полагаться на nHibernate.Если я хочу использовать Linq или обычный SQL, нелегко преобразовать DetachedCriteria в них.

Я хочу иметь класс, который может переносить условия запроса так же, как DetachedCriteria в nHibernate, но может быть преобразован в DetachedCriteria, или linq, или в простой SQL.класс в Java, который оборачивает условия запроса и может быть преобразован в простой SQL.Я хочу знать, есть ли какой-либо существующий проект в точечной сети, который может сделать подобную работу.

Ответы [ 2 ]

0 голосов
/ 11 октября 2010

Как насчет

Expression<Predicate<TEntity>>

Затем вы можете разобрать дерево выражений и преобразовать его в SQL. Для linq вы можете даже просто преобразовать его в предложение where с тем же предикатом.

http://blogs.msdn.com/b/mattwar/archive/2008/11/18/linq-links.aspx описывает создание полного поставщика Linq, но вам, вероятно, нужен только эквивалент предложения where.

0 голосов
/ 11 октября 2010

Вы можете использовать IQueryable и построить дерево выражений (способ, который .NET Framework использует для создания общего запроса) или вы можете реализовать свой собственный Шаблон спецификации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...