DBSet如何多次更新?

时间:2013-08-16 04:19:29

标签: c# linq dbset

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

3 个答案:

答案 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,流式传输数据而非实现数据