在Servicestack.Ormlite中选择命令在我分析时在4.0.54和4.0.56中有所不同



当我分析相同的选择命令时:

4.0.50:

SELECT "CustomerID", "CustomerCode", "CustomerName"
FROM "dbo"."Customer"
WHERE "CustomerCode" In ('871110000','864483025')

4.0.56:

exec sp_executesql N'SELECT "CustomerID", "CustomerCode", "CustomerName" 
FROM "Customer"
WHERE "CustomerCode" In (@0,@1)',N'@0 nvarchar(max) ,@1 nvarchar(max) ',@0=N'871110000',@1=N'864483025'

为什么 SS 会有这种变化?

我的客户代码是 Varchar 字段,但生成的命令是 Nvarchar 并且不使用我的索引,因此命令非常慢。

我该如何解决这个问题?

谢谢!

我找不到设置 IN 参数类型的方法,因此我们将选择核选项。

如果您仍在使用 4.0.56,则可以将以下行添加到应用程序启动中。

OrmLiteConfig.UseParameterizeSqlExpressions = false;

这将使ORMLite使用它使用参数创建SQL查询的"旧"方式(就像它在4.0.54之前所做的那样(。请注意,此属性设置为已弃用,因此,如果您升级了 ORMLite,则必须确定它是否仍然存在。

最新更新