Mysql
 sql >> Database >  >> RDS >> Mysql

subsonic 2 join su più colonne

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.