我有一个现有的 SqlBuilder,它看起来像这样
var query = SQL
.WHERE("Field1 = {0}", "bob");
现在我想将这个 sqlBuilder 传递给另一个函数,以便可以对其进行操作,可以在其中添加 SELECT、FROM 和其他 WHERE 子句,但这似乎不可能?
如果我将这个 sqlBuilder 传递给一个函数并像这样调用 .SELECT
public void myFunction(SqlBuilder sqlBuilder)
{
var newBuilder = sqlBuilder.Clone()
.SELECT("*")
.FROM("myTable")
.WHERE("Field2 = {0}", "something");
}
现在我希望 SQL 类似于
SELECT * FROM myTable WHERE Field1 = 'bob' AND Field2 = 'something'
但相反,我得到的 SQL 等于
WHERE Field1 = 'bob' SELECT * FROM myTable WHERE Field2 = 'something'
显然这是无效的。我怎么能做我想做的事?这对 DbExtensions 来说是不可能的吗?
正如我所说,我想操作现有的 SqlBuilder(首先克隆它)并向其添加附加子句。您必须按顺序添加每个子句吗?认为它会在需要创建 SQL 字符串之前将每个都保存在某种背景字典中?