SubSonic RESTHandler Вопрос - PullRequest
       4

SubSonic RESTHandler Вопрос

1 голос
/ 26 мая 2009

Я впервые играю с SubSonic RESTHandler, и это потрясающе ... Есть одна странность, о которой мне интересно.

RESTHandler.cs (строка 319):

//if this column is a string, by default do a fuzzy search
if(comp == Comparison.Like || column.IsString)
{
    comp = Comparison.Like;
    paramValue = String.Concat("%", paramValue, "%");
}

Эта небольшая ошибка кода заставляет все поиски по строковым столбцам выполнять поиск по шаблону по умолчанию. Это кажется противоречивым, поскольку вы предоставили хороший набор сравнений, которые мы можем добавить к параметру (_is, _notequal и т. Д.). Есть ли причина, по которой это было сделано? EvalComparison использует «Comparison.Equals» в качестве значения по умолчанию, поэтому, если явно не требуется подобное, столбец «||.

Это сводило меня с ума, потому что вы не можете сделать "WHERE Field = X" без изменения кода ...

Просто любопытно, если это больше функция, чем ошибка ...

Спасибо!

Zach

Ответы [ 2 ]

1 голос
/ 26 мая 2009

Это потому, что это операция LIKE, которая для БД обычно допускает строковые операции. В то время было ощущение, что если вы хотите равных, вы можете просто использовать это.

Прошло много времени с тех пор, как я коснулся этого кода - если вы будете достаточно любезны, чтобы открыть ошибку, я посмотрю на нее.

0 голосов
/ 26 мая 2009

Это действительно похоже на особенность. Это основано на идее, что, если я ищу строку в столбце без подстановочных знаков, я должен точно соответствовать строке, иначе у меня не будет совпадений. Я подозреваю, что это было сделано, чтобы упростить программирование текстовых полей поиска.

...