Обратное выражение. Как критерий - PullRequest
5 голосов
/ 27 мая 2010

Как мне написать в обратном порядке оператор с использованием критериев 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, как указано выше, где свойство существует в родительской таблице, а не в таблице корневых типов.

1 Ответ

0 голосов
/ 27 мая 2010

Вы пытались добавить NOT (!) Перед оператором для того, который вы хотите, но не хотите. я думаю, что это может сработать.

...