SubSonic RESTHandler问题

时间:2009-05-26 17:16:46

标签: c# subsonic

我第一次玩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”......

只是好奇这是否是一个功能而不是一个错误......

谢谢!

扎克

2 个答案:

答案 0 :(得分:1)

这是因为这是一个LIKE操作,对于DB来说通常允许字符串操作。当时的感觉是,如果你想要平等,你可以使用它。

自从我触及这段代码已经有一段时间了 - 如果你能够打开一个bug,我会看看它。

答案 1 :(得分:0)

它确实看起来像一个功能。它基于这样的想法:如果我在没有通配符的列中搜索字符串,我必须完全匹配字符串,否则我没有命中。我怀疑这样做是为了使编程搜索文本框更容易。