Avec SubSonic 2 prêt à l'emploi, vous ne pouvez pas.
Cela dit, vous avez les alternatives suivantes :
Étendre SubSonic
Si vous connaissez déjà SubSonic, vous pouvez envisager d'ajouter des jointures multi-colonnes à SubSonic lui-même.
Utiliser des vues, des procédures stockées, des fonctions de table
Si vous ne voulez pas jouer avec le code SubSonics, utilisez des vues, des procédures stockées et/ou des fonctions de table dans SQL Server. SubSonic facilite l'accès aux données des vues et des procédures stockées.
Utiliser une InlineQuery
InlineQuery vous permet d'exécuter n'importe quel sql - s'il est possible d'avoir du sql nu dans votre code.
Solution de contournement laide avec InlineQuery
Si vous voulez absolument créer votre requête avec SubSonic, vous pouvez essayer ceci :
SqlQuery q = DB.Select()
.From<TableA>()
.CrossJoin<TableB>()
.Where(TableA.YearColumn).IsEqualTo(0)
.And(TableA.MonthColumn).IsEqualTo(0)
.And(TableA.UseridColumn).IsEqualTo(0);
Créez l'instruction SQL et remplacez les noms des paramètres :
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);
Utilisez ensuite s avec un InlineQuery.