Thank you for bringing this issue to our attention.
Indeed Telerik Data Access does not generate the appropriate SQL statement for the demonstrated LINQ query. It does, however, offer a workaround, which allows you to retrieve only the Product objects that participate in orders. The LINQ query would like the following:
var result = dbContext.Products
.Where(p => dbContext.OrderDetails
.Any(od => od.ProductID == p.ProductID &&
dbContext.Orders.Any(o => o.OrderID == od.OrderID)));
With it the SQL statement generated by Telerik Data Access would be:
b.[ProductID] = a.[ProductID]
c.[OrderID] = b.[OrderID]))
Additionally, Telerik Data Access offer the necessary features to execute a custom SQL statement that can involve JOIN clauses. The code in this case, would be a mix between plain ADO code and LINQ.
Regarding the fix which is still unavailable, I kindly ask you to accept our apologies. Let me assure you that it is logged on our side and that we are going to evaluate it to find a suitable place for it on our roadmap.
I hope my suggestion works for you. Do let us know if you need further assistance or have questions.
OpenAccess ORM is now Telerik Data Access
. For more information on the new names, please, check out the Telerik Product Map