2013-08-16 5 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 из-за влияния на производительность, поток данных, а не материализуются его

Смежные вопросы