Синтаксис sql внутреннего соединения простого запроса Subsonic 3

Я хочу выполнить простое соединение двух таблиц (BusinessUnit и UserBusinessUnit), чтобы получить список всех BusinessUnits, выделенных данному пользователю.

Первая попытка работает, но нет переопределения Select, которое позволяет мне ограничивать возвращаемые столбцы (я получаю все столбцы из обеих таблиц):

var db = new KensDB();
SqlQuery query = db.Select
 .From<BusinessUnit>()
 .InnerJoin<UserBusinessUnit>( BusinessUnitTable.IdColumn, UserBusinessUnitTable.BusinessUnitIdColumn )
 .Where( BusinessUnitTable.RecordStatusColumn ).IsEqualTo( 1 )
 .And( UserBusinessUnitTable.UserIdColumn ).IsEqualTo( userId );

Вторая попытка разрешает ограничение имени столбца, но сгенерированный sql содержит имена таблиц во множественном числе (?)

SqlQuery query = new Select( new string[] { BusinessUnitTable.IdColumn, BusinessUnitTable.NameColumn } )
 .From<BusinessUnit>()
 .InnerJoin<UserBusinessUnit>( BusinessUnitTable.IdColumn, UserBusinessUnitTable.BusinessUnitIdColumn )
 .Where( BusinessUnitTable.RecordStatusColumn ).IsEqualTo( 1 )
 .And( UserBusinessUnitTable.UserIdColumn ).IsEqualTo( userId );

Производит ...

SELECT [BusinessUnits].[Id], [BusinessUnits].[Name]
 FROM [BusinessUnits]
 INNER JOIN [UserBusinessUnits]
 ON [BusinessUnits].[Id] = [UserBusinessUnits].[BusinessUnitId]
 WHERE [BusinessUnits].[RecordStatus] = @0
 AND [UserBusinessUnits].[UserId] = @1

Итак, два вопроса:
- Как мне ограничить количество столбцов, возвращаемых в методе 1?
- Почему метод 2 использует множественное число имен столбцов в сгенерированном SQL (и могу ли я обойти это?)

Я использую 3.0.0.3 ...


person kenxl    schedule 29.07.2009    source источник


Ответы (2)


На данный момент мой опыт работы с 3.0.0.3 показывает, что это пока невозможно с инструментом запросов, хотя это и с версией 2.

Я думаю, что предпочтительный метод (пока) с версией 3 - использовать запрос linq с чем-то вроде:

var busUnits = from b in BusinessUnit.All()
join u in UserBusinessUnit.All() on b.Id equals u.BusinessUnitId
select b;
person jcomet    schedule 01.08.2009

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

Как только я повторно запустил все шаблоны, имена таблиц во множественном числе исчезли.

Попробуйте повторно запустить все 4 шаблона и посмотрите, решит ли это проблему за вас.

person Community    schedule 17.08.2009