SubSonic.SqlQuery неправильно генерируется при использовании Where () - PullRequest
0 голосов
/ 03 июня 2009

Я использую версию 2.1 SubSonic. Я пытаюсь создать относительно простой запрос, в котором я получаю список ролей для пользователя, используя UserId в качестве параметра. (UserId - это строка ...)

SubSonic.SqlQuery sel = new SubSonic.Select().From(Data.Tables.Role).InnerJoin(Data.Tables.UserRole, Data.UserRole.Columns.RoleId, Data.Tables.Role, Data.Role.Columns.Id).InnerJoin(Data.Tables.User, Data.User.Columns.Id, Data.Tables.UserRole, Data.UserRole.Columns.UserId).Where("[dbo].[User].[Id]").IsEqualTo(userId);

это генерирует запрос

SELECT [dbo]. [Role]. [Id], [dbo]. [Role]. [PID], [dbo]. [Role]. [Name] ОТ [dbo]. [Роль] INNER JOIN [dbo]. [UserRole] ON [dbo]. [Role]. [Id] = [dbo]. [UserRole]. [RoleId] INNER JOIN [dbo]. [Пользователь] ON [dbo]. [UserRole]. [UserId] = [dbo]. [Пользователь]. [Id] ГДЕ [dbo]. [Пользователь]. [Id] = @ [dbo]. [Пользователь]. [Id] 0

, что не удается. Если я заменю Where на .Where (Data.User.Columns.Id), это сгенерирует запрос

SELECT [dbo]. [Role]. [Id], [dbo]. [Role]. [PID], [dbo]. [Role]. [Name] ОТ [dbo]. [Роль] INNER JOIN [dbo]. [UserRole] ON [dbo]. [Role]. [Id] = [dbo]. [UserRole]. [RoleId] INNER JOIN [dbo]. [Пользователь] ON [dbo]. [UserRole]. [UserId] = [dbo]. [Пользователь]. [Id] ГДЕ [dbo]. [Роль]. [Id] = @ Id0

, которая использует таблицу Role в предложении Where вместо таблицы User.

Это ошибка или я что-то делаю неправильно? Каков будет правильный способ сделать это? Спасибо.

1 Ответ

1 голос
/ 03 июня 2009

Это исправлено в версии 2.2 - я бы предложил обновить.

...