2013-08-16 28 views
0

我在使用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條記錄,我該怎麼辦?

回答

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
db.Pins.Where(EPin => EPin.UserID == null && EPin.CC == 5000).Take(5).ToList() 
     .ForEach(item => { item.OrderID = OrderID; item.UserID = intUserID; }); 
db.SaveChanges(); 
0

如果您在使用EF6,那麼你可以使用EntityFramework.Extended:

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

避免使用.ForEach出於性能方面的,流中的數據,而不是兌現它