Я хочу выполнить простое соединение двух таблиц (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 ...