Я создаю метод, который может создать фильтр, понятный NHibernate (под фильтром я имею в виду, например, набор объектов ICriteria) из моего абстрактного объекта фильтра.
public static IEnumerable<ICriterion> ToNhCriteria(this MyCriteria criteria)
{
// T4 generated function
// lots of result.Add(Expression.Or(Expression.Eq(),Expression.Eq)) expression trees - hard to generate
// Is there a way to generate HQL/Linq query here istead?
}
тогда я хочу сделать что-то вроде
session.CreateCriteria<Entity>().Add(myCriteria.ToNhCriteria())
для фильтрации объектов.
Проблема в том, что с помощью Expression. Методы (Expression.Or и т. д.) довольно утомительны (метод генерируется, и у меня есть несколько операторов или операторов, которые должны быть каким-то образом объединены в выражение).
Есть ли способ избежать использования Expression.Or () и создать ICrietrion / ICriteria с помощью LINQ или HQL?