2013-06-25 21 views
1

我有一個模型對象的大集合,我想更新所有這些對象,以指示它們狀態的變化(它們都在過渡到相同的新狀態。)我使用UpdateAll()低效地更新整個集合,但對於大型集合,這變得非常慢。什麼是對集合進行部分更新的有效方式

我想知道,如果有來電UpdateOnly()集合友好的方式,如果沒有,我想知道如果我最好的路線是對每個模型對象環繞各個呼叫一個交易UpdateOnly()。 (如果沒有,我很有興趣瞭解推薦的方法來完成這項任務。)

最後,作爲一個 - 真棒框架 - 非常感謝德米斯和所有其他contributors

回答

2

在沒有答案的情況下,我實現了我在問題中提到的解決方法(將單個調用封裝到UpdateOnly()。當表中討論的問題沒有很多爭論時,這似乎更好。但是當我們開始進行性能測試時,這個循環成了整個應用程序的瓶頸。

我最終看到了ORMLite源代碼(事後看來,我應該首先考慮它)。您可以使用Update(this IDbConnection dbConn, string table = null, string set = null, string where = null)方法例如:

var ids = MyObjectList.Select(h => h.Id); 
    string idsCsv = string.Join(", ", ids); 
    string whereClause = "Id in (" + idsCsv + ")"; 
    const string setClause = "MyStatus = 'Queried'"; 
    db.Update("MyObject", setClause, whereClause); 
相關問題