【问题标题】:DbExtensions - Cannot Manipulate SqlBuilderDbExtensions - 无法操作 SqlBuilder
【发布时间】:2015-06-19 15:29:55
【问题描述】:

我有一个现有的 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 字符串之前将它们保存在某种背景字典中?

【问题讨论】:

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


    【解决方案1】:

    对于 SqlBuilder,顺序很重要,就像 StringBuilder 一样。您必须调整您的代码,或者改用SqlSet

    【讨论】:

    • 似乎我在插入时也遇到了同样的问题。我看过 SqlSet,但你不能用它插入。看起来我必须更改我的代码。 Pitty,因为我现在将不得不循环两次代码,一次填充 INSERT INTO,然后再次执行 VALUES。你也找到这个了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多