Я создаю метод, который может создать фильтр, понятный NHibernate (например, фильтром i означает набор объектов ICriteria) из моего объекта абстрактного фильтра.Возможно ли создать ICriteria/ICriterion из LINQ или HQL?
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.Or и т. д.) довольно утомительны (метод сгенерирован и у меня есть несколько или операторов, которые каким-то образом должны быть объединены в выражение). Есть ли способ избежать использования Expression.Or() и создания ICrietrion/ICriteria с использованием LINQ или HQL?
Используете ли вы T4 во время разработки или времени выполнения для генерации ICriteria? Если во время разработки, что мешает вам использовать T4 для генерации HQL (или Linq) вместо этого? –
Да, я использую T4 во время разработки, и, как вы предположили, я могу использовать HQL или Linq вместо ICriteria. Проблема была вызвана нехваткой знаний, а не рамками ограничений. В настоящее время я использую API ICriteria, хотя, как представляется, он наиболее читабель для кого-то, кто читает T4, и теперь он работает правильно. – adrin