尝试使用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条记录,我该怎么办?
答案 0 :(得分: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();
试试上面的
答案 1 :(得分:1)
db.Pins.Where(EPin => EPin.UserID == null && EPin.CC == 5000).Take(5).ToList()
.ForEach( item => { item.OrderID = OrderID; item.UserID = intUserID; });
db.SaveChanges();
答案 2 :(得分:0)
如果您使用EF6,则可以使用EntityFramework.Extended:
db.Pins.Where(EPin => EPin.UserID == null && EPin.CC == 5000)
.Update(p => new Pin { OrderID = OrderID; UserID = intUserID; });
由于性能影响而避免使用.ForEach
,流式传输数据而非实现数据