我有一个现有的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字符串?
发布于 2015-06-20 02:39:01
使用SqlBuilder,顺序很重要,就像使用StringBuilder一样。你要么调整你的代码,要么改用SqlSet。
https://stackoverflow.com/questions/30941954
复制相似问题