【发布时间】:2010-06-08 06:48:04
【问题描述】:
我有以下 Subsonic 3.0 查询,其中包含一个嵌套的 NotIn 查询:
public List<Order> GetRandomOrdersForNoReason(int shopId, int typeId)
{
// build query
var q = new SubSonic.Query.Select().Top("1")
.From("Order")
.Where("ShopId")
.IsEqualTo(shopId)
.And(OrderTable.CustomerId).NotIn(
new Subsonic.Query.Select("CustomerId")
.From("Customer")
.Where("TypeId")
.IsNotEqualTo(typeId))
.OrderDesc("NewId()");
// Output query
Debug.WriteLine(q.ToString());
// returned typed list
return q.ExecuteTypedList<Order>();
}
内部查询似乎不正确:
SELECT TOP 1 *
FROM [Order]
WHERE ShopId = @0 AND CustomerId NOT IN (SELECT CustomerId
FROM [Customer]
WHERE TypeId = @0)
ORDER BY NewId() ASC
您会注意到这两个参数都是 @0。我假设为每个“新”选择查询枚举参数(从零开始)。但是,在这种两个 Select 查询嵌套的情况下,我希望输出有两个名为 @0 和 @1 的参数。
我的查询基于 Rob Conery 在他的博客上提供的 one 作为 Subsonic 3 的“Pakala”查询工具的预览。他的示例是:
int records = new Select(Northwind.Product.Schema)
.Where("productid")
.In(
new Select("productid").From(Northwind.Product.Schema)
.Where("categoryid").IsEqualTo(5)
)
.GetRecordCount();
还有其他人看到过这种行为吗?这是一个错误,还是一个错误或我的部分?由于我是 Subsonic 的新手,我猜测这可能是我的程序员错误,但如果可能的话,我想确认一下。
【问题讨论】:
标签: c# activerecord subsonic subsonic3