Вы всегда можете проверить, какой запрос subsonic генерирует для вас, с помощью метода BuildSqlStatement()
:
SqlQuery query = DB.Select().From<Product>();
String output = query.BuildSqlStatemtent();
Но я думаю, что знаю, в чем проблема: методы соединения SubSonic2 не поддерживают объединение нескольких столбцов, насколько мне известно: дозвуковое соединение 2 в нескольких столбцах
Таким образом, у вас есть два варианта.
а) сделать "запятую"
SELECT * FROM table1
INNER JOIN table2 ON table1.id = table2.table1_id
такой же, как этот запрос ниже, но более читабельный
SELECT * FROM table1, table2
WHERE table1.id = table2.table1_id
По крайней мере, это так для mysql
Редактировать: Это не будет работать с дозвуковой, как я понял в моем вопросе (но забыл)
http://www.mysqlperformanceblog.com/2010/04/14/is-there-a-performance-difference-between-join-and-where/
b) Использовать InlineQuery, который является бэкдором от subsonic, для выполнения простого sql.
private class Process
{
public Int64 Id { get; set; }
public string User { get; set; }
public string Host { get; set; }
public string Db { get; set; }
public string Command { get; set; }
public string State { get; set; }
public string Info { get; set; }
}
var result = DB.Query().ExecuteTypedList<Process>("SHOW FULL PROCESSLIST");