Z SubSonic 2 po wyjęciu z pudełka nie możesz.
To powiedziawszy, masz następujące alternatywy:
Rozszerz SubSonic
Jeśli znasz już SubSonic, możesz rozważyć dodanie złączeń wielokolumnowych do samego SubSonic.
Użyj widoków, procedur składowanych, funkcji tabel
Jeśli nie chcesz zadzierać z kodem SubSonics, użyj widoków, procedur składowanych i/lub funkcji tabel na serwerze sql. SubSonic ułatwia dostęp do danych z widoków i procedur składowanych.
Użyj InlineQuery
InlineQuery pozwala na wykonanie dowolnego sql - jeśli jest to opcja, aby mieć goły sql w kodzie.
Brzydkie obejście z InlineQuery
Jeśli absolutnie chcesz utworzyć zapytanie za pomocą SubSonic, możesz spróbować tego:
SqlQuery q = DB.Select()
.From<TableA>()
.CrossJoin<TableB>()
.Where(TableA.YearColumn).IsEqualTo(0)
.And(TableA.MonthColumn).IsEqualTo(0)
.And(TableA.UseridColumn).IsEqualTo(0);
Zbuduj instrukcję SQL i zastąp nazwy parametrów:
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);
Następnie użyj s z InlineQuery.