0

尝试通过使用 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 条记录,我应该怎么做?

4

3 回答 3

1
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();

试试上面的

于 2013-08-16T04:21:31.697 回答
1
db.Pins.Where(EPin => EPin.UserID == null && EPin.CC == 5000).Take(5).ToList()
       .ForEach( item =>  { item.OrderID = OrderID; item.UserID = intUserID; });
db.SaveChanges();
于 2013-08-16T04:28:17.943 回答
0

如果您使用 EF6,那么您可以使用 EntityFramework.Extended:

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

.ForEach由于性能影响而避免使用,流式传输数据而不是实现它

于 2016-09-30T11:49:00.147 回答