【发布时间】:2009-06-03 15:56:38
【问题描述】:
我使用的是 SubSonic 2.1 版。我正在尝试构建一个相对简单的查询,在其中我使用 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);
这会生成查询
选择 [dbo].[Role].[Id]、[dbo].[Role].[PID]、[dbo].[Role].[Name] FROM [dbo].[角色] 内部连接 [dbo].[UserRole] ON [dbo].[Role].[Id] = [dbo].[UserRole].[RoleId] 内部联接 [dbo].[User] ON [dbo].[UserRole].[UserId] = [dbo].[User].[Id] WHERE [dbo].[User].[Id] = @[dbo].[User].[Id]0
失败了。如果我将 Where 替换为 .Where(Data.User.Columns.Id) 这将生成查询
选择 [dbo].[Role].[Id]、[dbo].[Role].[PID]、[dbo].[Role].[Name] FROM [dbo].[角色] 内部连接 [dbo].[UserRole] ON [dbo].[Role].[Id] = [dbo].[UserRole].[RoleId] 内部连接 [dbo].[User] ON [dbo].[UserRole].[UserId] = [dbo].[User].[Id] WHERE [dbo].[Role].[Id] = @Id0
在 Where 子句中使用 Role 表而不是 User 表。
这是一个错误,还是我做错了什么?这样做的正确方法是什么?谢谢。
【问题讨论】:
标签: subsonic