【发布时间】:2016-03-30 01:59:34
【问题描述】:
我们的代码有一个 SqlExpression,它至少是这样的:
var q = db.From<Users>();
q.Where(u => u.Age == 25);
totalRecords = db.Scalar<int>(q.ToCountStatement());
q.ToCountStatement() 生成以下查询:
SELECT COUNT(*) FROM "Users" WHERE ("Age" = @0)
但是,db.Scalar() 会引发异常:必须声明标量变量“@0”。这在最近的版本中已经开始发生(在 4.0.54 中测试)。相同的代码在 v4.0.50 之前运行良好。我查看了发行说明,但找不到相关更改。
即使传递参数也会抛出相同的异常:
totalRecords = db.Scalar<int>(q.ToCountStatement(), 25);
这是一个错误,还是我的疏忽?
其次,是否可以让q.ToCountStatement() 使用COUNT(Age) 或COUNT([PrimaryKey]) 而不是COUNT(*) 生成更优化的查询?
【问题讨论】:
标签: servicestack ormlite-servicestack