DB设置如何多次更新

本文关键字:更新 何多次 设置 DB | 更新日期: 2023-09-27 18:28:01

我在尝试使用dbset更新记录时遇到了一个问题。以下是我的代码:

CROPContext db = new CROPContext();
var EPins = from EPin in db.Pins.Take(5)
            where
                (EPin.UserID == null && EPin.CC == 5000)
            select EPin;
foreach (var item in Epins.ToList())
{
    item.OrderID = OrderID;
    item.UserID = intUserID;
}
db.SaveChanges();

当我更新记录时,它会更新所有记录。然后我检查了数字EPins.Count(),我发现它不是5,而是所有的数字。如果我想更新前5条记录,我应该怎么做?

DB设置如何多次更新

var EPins = (from EPin in db.Pins
            where
                (EPin.UserID == null && EPin.CC == 5000)
            select EPin).Take(5);
foreach (var item in Epins.ToList())
{
    item.OrderID = OrderID;
    item.UserID = intUserID;
}
db.SaveChanges();

尝试上面的

db.Pins.Where(EPin => EPin.UserID == null && EPin.CC == 5000).Take(5).ToList()
       .ForEach( item =>  { item.OrderID = OrderID; item.UserID = intUserID; });
db.SaveChanges();

如果使用EF6,则可以使用EntityFramework。扩展:

db.Pins.Where(EPin => EPin.UserID == null && EPin.CC == 5000)
       .Update(p => new Pin { OrderID = OrderID; UserID = intUserID; });

由于性能影响,避免使用.ForEach,流式传输数据,而不是将其具体化