Mysql
 sql >> Base de données >  >> RDS >> Mysql

jointure subsonic 2 sur plusieurs colonnes

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.