1

我收集了由属性ID标识的用户集合,对于每个用户,我想将他的用户名更新为用户名+“!” .

在 bltoolkit 我这样尝试:

using(var db = new DbManager)
{
    foreach(var user in users)
    {
        db.GetTable<User>().Where(x=>x.Id == user.Id).Set(x=>x.Username, x.Username + "!").Update();
    }        
}

我想这将对数据库进行n次查询(而n用户集合的大小),这是我试图避免的。

有没有其他(更好的)解决方案可以像这样更新整个集合?

4

1 回答 1

4

将此使用添加到您的代码中:

using BLToolkit.Data.Linq

现在您可以Update<T>DbManager. 此方法允许您通过将实体集合作为参数传递来进行批量更新。

在您的情况下,像这样使用它:

using(var db = new DbManager)
{
    foreach(var user in users)
       user.Username = user.Username + "!";  //update each user in collection first

    db.Update<User>(users);  //just one database call for batch update
}
于 2014-03-26T12:17:15.430 回答