我有一组由属性 Id 标识的用户,对于每个用户,我想将他的用户名更新为类似username+"!" .
在 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 是用户的大小> 集合),这是我试图避免的。
是否有任何其他(更好的)解决方案来像这样更新整个集合?
请您参考如下方法:
将此使用添加到您的代码中:
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
}
