gpt4 book ai didi

Dapper SqlBuilder OrWhere 使用 AND 而不是 OR

转载 作者:行者123 更新时间:2023-12-04 11:50:16 32 4
gpt4 key购买 nike

我试图为 Dapper 使用 SqlBuilder 的 Where 和 OrWhere 方法,但它的行为并不像我期望的那样。

this question 的编辑部分基本上是我遇到的。由于没有收到回复,所以我会在这里问。

var builder = new SqlBuilder();
var sql = builder.AddTemplate("select * from table /**where**/ ");
builder.Where("a = @a", new { a = 1 })
.OrWhere("b = @b", new { b = 2 });

我期待 select * from table WHERE a = @a OR b = @b
但我得到了 select * from table WHERE a = @a AND b = @b
有没有办法使用 SqlBuilder 向 where 子句添加 OR?

我认为这只是将 SqlBuilder 类中的以下内容更改为 OR 而不是 AND 的问题,但我想确认一下。
public SqlBuilder OrWhere(string sql, dynamic parameters = null)
{
AddClause("where", sql, parameters, " AND ", prefix: "WHERE ", postfix: "\n", IsInclusive: true);
return this;
}

最佳答案

没关系。我查看了 SqlBuilder 代码,发现如果混合了 Where 和 OrWhere,它将执行以下操作:

  • 加入所有 AND 子句
  • 单独加入所有 OR 子句
  • 使用 AND
  • 在 AND 子句末尾附加 OR 子句

    如果您没有超过 1 个 OrWhere,那么您将看不到任何 OR。

    我将修改我的查询逻辑以考虑到这一点

    关于Dapper SqlBuilder OrWhere 使用 AND 而不是 OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31442086/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com