我第一次玩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”作为默认值,因此除非明确需要类似,否则“|| column.IsString”看起来应该被删除,因为它会破坏使用不同类型比较的能力。
这让我很生气,因为你不能在没有修改代码的情况下做“WHERE Field = X”......
只是好奇这是否是一个功能而不是一个错误......
谢谢!
扎克
答案 0 :(得分:1)
这是因为这是一个LIKE操作,对于DB来说通常允许字符串操作。当时的感觉是,如果你想要平等,你可以使用它。
自从我触及这段代码已经有一段时间了 - 如果你能够打开一个bug,我会看看它。
答案 1 :(得分:0)
它确实看起来像一个功能。它基于这样的想法:如果我在没有通配符的列中搜索字符串,我必须完全匹配字符串,否则我没有命中。我怀疑这样做是为了使编程搜索文本框更容易。