【问题标题】:SubSonic.SqlQuery incorrectly generated when using Where()使用 Where() 时错误生成 SubSonic.SqlQuery
【发布时间】: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


    【解决方案1】:

    这在 2.2 版中已修复 - 我建议升级。

    【讨论】:

    • 谢谢罗伯。那解决了它。它不再试图将我的字符串 ID 转换为 int。 (我前几天刚开始接触 SubSonic,所以我还是觉得菜鸟。) ps:我前几天刚在亚马逊上订购了你的 MVC 书。我迫不及待想要得到它! /奉承
    猜你喜欢
    • 2020-10-24
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 2021-06-27
    • 2014-11-01
    • 2015-09-28
    相关资源
    最近更新 更多