DbExtensions - 无法操纵SqlBuilder

时间:2015-06-19 15:29:56

标签: c# sql .net vb.net dbextensions

我有一个现有的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字符串?

1 个答案:

答案 0 :(得分:0)

使用SqlBuilder,顺序很重要,就像使用StringBuilder一样。您必须调整代码,或使用SqlSet代替。