Я в основном пытаюсь выполнить запрос, который дает мне всех пользователей, которые приобрели продукт с определенным SKU. По сути это SQL здесь:
SELECT u.FirstName, u.LastName, u.Email
FROM COM_OrderItem oi INNER JOIN COM_Order o ON oi.OrderItemOrderID = o.OrderID
INNER JOIN COM_Customer c ON o.OrderCustomerID = c.CustomerID
INNER JOIN CMS_User u ON c.CustomerUserID = u.UserID
WHERE oi.OrderItemSKUID = 1013
Я пытался использовать API ObjectQuery, чтобы попытаться достичь этого, но не знаю, как это сделать. Документация здесь не охватывает конкретный тип сценария, который я ищу. Я придумал это только для того, чтобы проверить, работает ли оно, но в результате я не получаю три столбца, которые мне нужны:
var test = OrderItemInfoProvider
.GetOrderItems()
.Source(orderItems => orderItems.Join<OrderInfo>("OrderItemOrderID", "OrderID"))
.Source(orders => orders.Join<CustomerInfo>("OrderCustomerID", "CustomerID"))
.Source(customers => customers.Join<UserInfo>("CustomerUserID", "UserID"))
.WhereEquals("OrderItemSKUID", 1013).Columns("FirstName", "LastName", "Email").Result;
Я знаю, что это определенно неправильно, и я хотел бы знать правильный путь для достижения этого. Возможно, использование ObjectQuery не является правильным подходом здесь, или, может быть, я могу как-то просто использовать сырой SQL. Я просто недостаточно знаю о Кентико, чтобы понять, как лучше подходить к делу.