2011-11-30 5 views
-1

사용자가 특정 페이지를 방문 할 때 테이블의 모든 행을 업데이트해야합니다. 모든 필드를 "false"로 업데이트해야합니다. 이 코드 시도 :EF4.1 - 많은 행을 업데이트 해보십시오.

var history = db.UserHistory.Where(m => m.UserID == id); 
TryUpdateModel(history); 
history.IsActive = false; 
db.SaveChanges(); 

를하지만 나에게 오류 메시지가 발생합니다. 누구든지이 업데이트로 도움을받을 수 있습니까?

+3

무엇이 오류 메시지입니까? –

+0

그리고 TryUpdateModel은 무엇을합니까? – DamienG

+0

DamienG : "컨트롤러의 현재 값 공급자의 값을 사용하여 지정된 모델 인스턴스를 업데이트합니다.".NET의 일부 4 –

답변

1

처음에는 LINQ가 많은 행을 한 번에 업데이트하지 못했습니다. 루프를 만들고 각각을 업데이트해야합니다. 최종 코드는 다음과 같습니다.

var history = db.UserHistory.Where(m => m.UserID == id).ToList(); 
TryUpdateModel(history); 
history.ForEach(m => m.IsActive = false); 
db.SaveChanges(); 
0

하나의 항목을 선택하는 것처럼 보이기 때문에 intellisense와 함께 나타나야하는 첫 줄에 .FirstOrDefault()를 추가하고 싶을 것입니다.

var history = db.UserHistory.Where(m => m.UserID == id).FirstOrDefault(); 
TryUpdateModel(history); 
history.IsActive = false; 
db.SaveChanges(); 

지금은 단일 항목이 아니라 IQueryable을 반환합니다. FirstOrDefault는 단일 UserHistory 엔티티를 반환하므로 적어도 하나의 항목을 TryUpdateModel에 전달해야합니다.

+0

제 질문은 업데이트 할 많은 결과에 대한 것입니다. 한 줄 이상을 입력해야하므로 모두 업데이트하고 싶습니다. –

+0

아마 foreach를 사용해야 할 수도 있습니다. 각 행을 업데이트 하시겠습니까? 업데이트 할 값은 항상 동일하고 항상 거짓이며 colunm도 항상 동일합니다 ... –

관련 문제