Как мне написать в обратном порядке оператор с использованием критериев NHibernate?
WHERE 'somestring' LIKE [Property] + '%'
Под Вопрос:
Можете ли вы получить доступ к абстрактному корневому псевдониму в выражении SQLCriterion?
Этого можно достичь, используя выражение SQLCriterion
Expression.Sql("? like {alias}.[Property] + '.%'", value, NHibernateUtil.String);
Однако в случае наследования класса {alias}
заменяется неверным псевдонимом для столбца.
Пример (эти классы хранятся в отдельных таблицах):
public abstract class Parent
{
public virtual string Property { get; set; }
}
public class Child : Parent { }
Приведенный выше запрос, выполняемый с Child
в качестве корневого типа, заменит {alias}
псевдонимом таблицы Child
вместо таблицы Parent
. Это приводит к недопустимому исключению столбца.
Мне нужно выполнить оператор like, как указано выше, где свойство существует в родительской таблице, а не в таблице корневых типов.