Mysql
 sql >> Datenbank >  >> RDS >> Mysql

subsonic 2 join für mehrere Spalten

Mit SubSonic 2 ist das nicht möglich.

Vor diesem Hintergrund haben Sie folgende Alternativen:

SubSonic verlängern

Wenn Sie bereits mit SubSonic vertraut sind, können Sie in Betracht ziehen, SubSonic selbst mehrspaltige Verknüpfungen hinzuzufügen.

Verwenden Sie Ansichten, gespeicherte Prozeduren, Tabellenfunktionen

Wenn Sie nicht mit SubSonics-Code herumspielen wollen, verwenden Sie Ansichten, gespeicherte Prozeduren und/oder Tabellenfunktionen innerhalb von SQL Server. SubSonic erleichtert den Zugriff auf Daten aus Ansichten und gespeicherten Prozeduren.

Verwenden Sie eine InlineQuery

InlineQuery ermöglicht es Ihnen, jedes SQL auszuführen - wenn es eine Option ist, reines SQL in Ihrem Code zu haben.

Hässlicher Workaround mit InlineQuery

Wenn Sie Ihre Abfrage unbedingt mit SubSonic erstellen möchten, können Sie Folgendes versuchen:

SqlQuery q = DB.Select()
  .From<TableA>()
  .CrossJoin<TableB>()
  .Where(TableA.YearColumn).IsEqualTo(0)
  .And(TableA.MonthColumn).IsEqualTo(0)
  .And(TableA.UseridColumn).IsEqualTo(0);

Erstellen Sie die SQL-Anweisung und ersetzen Sie die Parameternamen:

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);

Verwenden Sie dann s mit einer InlineQuery.