Con SubSonic 2 pronto all'uso non puoi.
Detto questo, hai le seguenti alternative:
Estendi SubSonic
Se hai già familiarità con SubSonic, potresti considerare di aggiungere join multicolonna a SubSonic stesso.
Utilizza viste, stored procedure, funzioni tabella
Se non vuoi pasticciare con il codice di SubSonics, usa viste, stored procedure e/o funzioni di tabella all'interno di sql server. SubSonic semplifica l'accesso ai dati da viste e procedure archiviate.
Utilizza una InlineQuery
InlineQuery ti consente di eseguire qualsiasi sql, se è un'opzione avere sql nudo nel tuo codice.
Brutta soluzione alternativa con InlineQuery
Se vuoi assolutamente creare la tua query con SubSonic, puoi provare questo:
SqlQuery q = DB.Select()
.From<TableA>()
.CrossJoin<TableB>()
.Where(TableA.YearColumn).IsEqualTo(0)
.And(TableA.MonthColumn).IsEqualTo(0)
.And(TableA.UseridColumn).IsEqualTo(0);
Compila l'istruzione SQL e sostituisci i nomi dei parametri:
string s = q.BuildSqlStatement();
s = s.Replace(q.Constraints[0].ParameterName, TableB.YearColumn.QualifiedName);
s = s.Replace(q.Constraints[1].ParameterName, TableB.MonthColumn.QualifiedName);
s = s.Replace(q.Constraints[2].ParameterName, TableB.UserIdColumn.QualifiedName);
Quindi usa s con un InlineQuery.