привет, я новичок в NHibernate, и я немного запутался.
Предположим, у нас есть таблица product. Пусть в таблице product будет 2 столбца price1 и price2.
тогда я могу запросить отображаемые сущности продукта через HQL следующим образом:
string queryString = @"from product p
where p.price1 = p.price2 + 100 ";
IList result = session.CreateQuery(queryString).List();
Как я могу добиться этого с помощью ICriteria API.
Я знаю, что это абсурд, но я пытаюсь вот так:
session.CreateCriteria(typeof(product))
.Add(Expression.Eq("price1", "price2" + 100))
.List()
или, что более уместно, вот так (с использованием лямбда-расширений):
session.CreateCriteria(typeof(product))
.Add<product>(p => p.price1 == (p.price2 + 100))
.List()
на самом деле я загрузил проект лямбда-расширений из googlecode и расширил его, чтобы повторно обрабатывать двоичные и унарные выражения для реализации таких выражений, как:
session.CreateCriteria(typeof(product))
.Add<product>(p =>
(!(p.price1 > 29007) && (p.price1 > 19009))
|| (p.price2 == 29009));
В настоящее время я обрабатываю такие запросы, как указано выше, но арифметические предложения меня раздражают, так как я не могу вернуть соответствующее ограничение, чтобы получить нужный мне критерий.
mpffh я устал пытаться объяснить это исчерпывающе. я надеюсь, что это сработало. Любая помощь приветствуется.