Tân*_*Tân 8 c# linq entity-framework
我的测试代码:
using (var db = new MyDbContext())
{
string fromUser = ""; //sender
string toUser = ""; //receiver
var messages = db.Message.Where(x => x.FromUser == fromUser && x.ToUser == toUser)
.ToList();
foreach (var message in messages)
{
message.IsRead = true;
db.SaveChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题:foreach在这种情况下,是否有另一种更新数据库而不使用循环的方法?
p/s:我一直在提到这些问题,但所有问题都没有解决我的问题:
Ste*_*ene 23
每次迭代都不需要SaveChanges().这将多次击中数据库.尝试:
using (var db = new MyDbContext())
{
string fromUser = ""; //sender
string toUser = ""; //receiver
var messages = db.Message.Where(x => x.FromUser == fromUser && x.ToUser == toUser)
.ToList();
messages.ForEach(m => m.IsRead = true);
db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
只是为了更新史蒂夫的答案,在较新的 EF(当前 EF Core 3.1.3)中,您可以将所有内容作为一个语句来完成。
await db.Message.Where(m => m.FromUser == fromUser && m.ToUser == toUser).ForEachAsync(m => m.IsRead = true);
await db.SaveChangesAsync().ConfigureAwait(false);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11974 次 |
| 最近记录: |