У меня есть следующий запрос 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.Однако в этом случае, когда два запроса Select вложены, я ожидал, что выходные данные будут иметь два параметра с именами @ 0 и @1.
Мой запрососнован на one , который Роб Конери дал в своем блоге в качестве предварительного просмотра инструмента запросов "Pakala", который стал Subsonic 3. Его пример был:
int records = new Select(Northwind.Product.Schema)
.Where("productid")
.In(
new Select("productid").From(Northwind.Product.Schema)
.Where("categoryid").IsEqualTo(5)
)
.GetRecordCount();
Кто-нибудь еще видел этоповедение?Это ошибка, или это ошибка или моя часть?Так как я новичок в Subsonic, я предполагаю, что это, вероятно, ошибка программиста с моей стороны, но я хотел бы получить подтверждение, если это возможно.