2015-06-19 70 views
0

我有一個現有的SqlBuilder,它看起來像這樣DbExtensions - 無法操縱SqlBuilder

var query = SQL 
    .WHERE("Field1 = {0}", "bob"); 

現在我想這個sqlBuilder傳遞到另一個函數,因此它可以被操縱,其中由SELECT,FROM和附加WHERE子句可以添加到它,但這似乎不可能?

如果我通過這個sqlBuilder成函數並調用。選擇像這樣

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字符串爲止?

回答

0

使用SqlBuilder,順序很重要,就像使用StringBuilder一樣。您必須修改代碼,或者使用SqlSet

+0

似乎我在訂購時也遇到同樣的問題,插入時也是如此。我看過SqlSet,但不能用它插入。看起來我必須改變我的代碼。 Pitty,因爲我現在必須循環兩次代碼,一次填充INSERT INTO,並再次執行VALUES。你有沒有找到這個? – Gillardo