【问题标题】:SqlKata - Join on string value and with ISNULL conditionSqlKata - 加入字符串值和 ISNULL 条件
【发布时间】:2019-12-20 05:16:16
【问题描述】:

我想加入 SqlKata 中的静态字符串值,但不知道该怎么做。

这就是我的查询需要的样子

LEFT JOIN [tblUserGroupMembers] AS [TUGM] ON ([TUGM].[UserGroupID] = [TUG].[UserGroupId] AND [TUGM].[UserType] = 'Primary')
LEFT JOIN [tblUsers] AS [TU] ON [TU].[UserId] = ISNULL([TIA].[UserId],[TUGM].[UserId])

如您所见,我想加入 TUGM.UserType = Primary 并加入另一个加入 [TU].[UserId] = ISNULL([TIA].[UserId],[TUGM].[UserId])

SqlKata 查询:

var dbQuery = db.Query("tblInvoices AS TI")
            .Join("tblInvoiceActions AS TIA", "TIA.InvoiceID", "TI.InvoiceID")
            .Join("APM_MASTER__INVOICE AS AMI", "AMI.InvoiceID", "TI.InvoiceID")
            .LeftJoin("tblUserGroups AS TUG", "TUG.UserGroupId", "TI.UserGroupId")
            .LeftJoin("tblUserGroupMembers AS TUGM",
                j => j.On("TUGM.UserGroupID", "TUG.UserGroupId")
                .On("TUGM.UserType","['Primary']"))
           .LeftJoin("tblUsers AS TU", "TU.UserId", "[ISNULL(TIA.UserId,TUGM.UserId)]")
           .LeftJoin("tblConnections AS TC", "TC.ConnectionID", "TI.ConnectionID");

【问题讨论】:

    标签: c# .net sqlkata


    【解决方案1】:

    Join 方法有一个重载,它在第二个参数中接受一个 lambda,以提供完全的灵活性。 将其与WhereRaw 一起使用来编写原始表达式,当然您应该注意这里的 SQL 注入。

    所以你可以在这里使用它:

    db.Query("tblInvoices as TI").LeftJoin(
       "tblUsers as TU", 
       j => j.WhereRaw("TU.UserId = ISNULL(...)")
    )
    

    【讨论】:

    • 完美..让我试试看会发生什么。
    猜你喜欢
    • 2011-06-09
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多