【发布时间】:2016-05-23 18:06:29
【问题描述】:
我使用 Entity Framework 6 已经有一段时间了,通常我一次更新 1 条记录。
但是,我需要遍历所有用户,300 - 1,000 个用户
更新数据库中的几列是否会非常低效和缓慢。使用 EF6.x 吗?我应该改用 ADO.NET 还是通过网络发送某种对象,进行一些批量更新??
目前我是这样更新的
rpmuser.usr_id = user;
rpmuser = db.rpm_usr.Find(rpmuser.usr_id);
rpmuser.lst_pwd_chg_dtm = dateTime;
rpmuser.cre_dtm = dateTime;
rpmuser.usr_pwd = hash;
rpmuser.salt = salt;
db.SaveChanges();
所以本质上,如果我循环访问其他用户,那可以吗?我还能如何通过批量更新来做到这一点?
for( .... ) {
// different user id
// all the other needed poco model changes above... etc.
// db.SaveChanges()
}
【问题讨论】:
-
请参阅以下link。它可能会为您指明正确的方向。
-
如果最终性能是目标,那么编写更新语句并将其传递给 Db 或编写一个 spoc 并从您的代码中调用它。
-
1,000 条记录并不多。不要在循环内执行 Find() 和 SaveChanges() - 一次获取集合、循环、SaveChanges()。
-
如何在不循环的情况下查找(每个唯一用户)?
标签: c# sql-server entity-framework entity-framework-6 bulkinsert