2013-08-16 2 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(); 

당신이 EF6를 사용하는 경우 사용할 수있는

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

위 EntityFramework.Extended을 시도해보십시오

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

데이터를 스트리밍보다는 실현 때문에 성능에 영향의 .ForEach를 사용하지 마십시오 그것

관련 문제