Some samples for valid queries
Query q = pc.NewQuery(typeof (DataContainer), qh.boolVar + " = 1");
Query q = pc.NewQuery(typeof (DataContainer), qh.boolVar + " = {0}");
q.Parameters.Add(true);
Query q = pc.NewQuery(typeof (DataContainer), qh.byteVar + " = " + (0x55).ToString());
// Better use Parameters
Query q = pc.NewQuery(typeof (DataContainer), qh.dateTimeVar + " = '05/06/2003'"); // dd/mm/yyyy
// The same query with parameters:
Query q = pc.NewQuery(typeof (DataContainer), qh.dateTimeVar + " = {0}");
q.Parameters.Add(dateTimeVal);
Query q = pc.NewQuery(typeof (DataContainer), qh.dateTimeVar + " BETWEEN {0} AND {1}");
q.Parameters.Add(DateTime.Now.Date - TimeSpan.FromDays(30));
q.Parameters.Add(DateTime.Now.Date);
Query q = pc.NewQuery(typeof (DataContainer), qh.stringVar + " LIKE 'T%' ESCAPE '\\'");
// Sql pass-through query
Query q = pc.NewQuery(typeof (DataContainer), "SELECT * FROM DataContainer where ID = 11", false, Query.Language.Sql);
// field name = SQL keyword
Query q = pc.NewQuery(typeof (DataContainer), "[between] LIKE 'T%'");
The query
Query q = pm.NewQuery(typeof (Customer), qh.orders.orderItems.product.name + " = {0}");
q.Parameters.Add("Shirt");
generates this SQL code (SQL server data provider)
SELECT [Customer].* FROM [Customer], [Order_], [OrderItem], [Product]
WHERE ([Order].[IDCustomer] = [Customer].[ID]
AND [OrderItem].[IDOrder] = [Order_].[ID]
AND [Product].[ID] = [OrderItem].[IDProduct])
AND [Product].[Name] = 'Shirt'