gpt4 book ai didi

c# - Subsonic 3 ActiveRecord 嵌套选择 NotIn 错误?

转载 作者:太空宇宙 更新时间:2023-11-03 11:47:40 26 4
gpt4 key购买 nike

我有以下 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。我假设为每个"new"选择查询枚举参数(从零开始)。但是,在嵌套两个 Select 查询的情况下,我希望输出具有两个名为 @0@1 的参数。

我的查询基于 one Rob Conery 在他的博客上给出了成为 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 的新手,我猜测这可能是我的程序员错误,但如果可能的话我想确认一下。

最佳答案

刚刚在最新版本中遇到了这个完全相同的问题,所以显然它还没有被修复。我尝试切换条件的顺序(将 NotIn 条件放在第一位)并且成功了。这是新代码的样子,它生成参数 @0 和 @1 而不是 @0 和 @0:

var q = new SubSonic.Query.Select().Top("1")
.From("Order")
.Where(OrderTable.CustomerId).NotIn(
new Subsonic.Query.Select("CustomerId")
.From("Customer")
.Where("TypeId")
.IsNotEqualTo(typeId)
)
.And("ShopId")
.IsEqualTo(shopId)
.OrderDesc("NewId()");

关于c# - Subsonic 3 ActiveRecord 嵌套选择 NotIn 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2995268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com