Использование SubSonic Query для нескольких таблиц - PullRequest
0 голосов
/ 14 мая 2009

Я хочу выбрать строки из нескольких таблиц, используя дозвуковые. Для одной таблицы я могу использовать объект Query, но я не знаю, как добавить несколько запросов к запросу.

1 Ответ

3 голосов
/ 14 мая 2009

Вы должны присоединиться к ним, как в SQL. Если у вас есть отношение внешнего ключа в схеме, Subsonic достаточно умен, чтобы вычислить соединения напрямую:

DataSet DS = DB.Select().From<Table1>().InnerJoin<Table2>().ExecuteDataSet();

Если у вас нет FKI между таблицами, вам нужно вручную указать столбцы из каждой таблицы для создания объединения:

DataSet DS = DB.Select().From<Table1>().InnerJoin(Table1.FKIColumn,Table2.IDColumn).ExecuteDataSet();

Аналогично вы можете создавать левый / правый внешние соединения и т. Д.

Помните, что вы можете присоединиться к ним только на простых ограничениях FKI. Например, я не нашел простого способа сделать "INNER JOIN Table2 on Table1.FKI = Table2.ID и Table2.CreateDate> Table1.CreateDate" напрямую из SubSonic.

И большой недостаток использования объединений таблиц SubSonic в том, что у вас возникнут проблемы, если в обеих таблицах есть столбцы с одинаковыми именами.

...