2014-01-20 8 views
1

저는 앱을 만들기 위해 Entity 프레임 워크를 사용하고 있습니다.LINQ를 사용하여 여러 행의 여러 열을 업데이트하십시오.

업데이트 할 테이블입니다.

[Id] [CheckItemId] [Checked] [Comment] 
1  100    1   abc 
2  150    0   xyz 

등급 :

public class CheckListRequest 
{ 
    public int ID { get; set; } 
    public bool IsChecked { get; set; } 
    public string Comment { get; set; } 
} 

public static void UpdateCheckList(List<CheckListRequest> checkList){ 

} 

가 어떻게 값이 LINQ를 사용하여 프론트 엔드에서 목록에서 오는 (검사, 주석)과 같은 테이블에 여러 열을 업데이트합니까? dbContext 가정

답변

3

DataContext하고 Id 테이블의 기본 키이며,이 시도 :

public static void UpdateCheckList(List<CheckListRequest> checkList) 
{ 
    foreach (CheckListRequest clr in checkList) 
    { 
     CheckListRequest clrInDB = dbContext.CheckListRequests.SingleOrDefault(o.Id == clr.Id); 
     clrInDB.IsChecked = clr.IsChecked; 
     clrInDB.Comment = clr.Comment; 
    } 

    dbContext.SaveChanges(); 
} 
+0

는 SaveChanges를 변경 내용을 루프가 실행될 때마다 수 있도록 루프 내부에 와서 neeed 할 ... – ankur

+0

요구 사항에 따라 다르지만, 10 개의 레코드를 업데이트하고 4 번째 레코드가 실패했다고 가정 해 봅시다. 처음 3 개 레코드의 변경 사항을 롤백 하시겠습니까? – ekad

+1

그런 식으로 단 하나의 SingleOrDefault()를 SingleOrDefault() 호출로 줄일 수 있습니다 :-) – Moeri

0

가 어떻게 값으로 (검사, 주석)과 같은 테이블에 여러 열을 업데이트 할

당신은 하나의 열을 업데이트 할 것

정확히 같은 방식으로 ...

  1. 컨텍스트에서 엔터티 가져 오기
  2. 업데이트 열/열
  3. 컨텍스트에서 SaveChanges() 메서드를 호출하십시오.
using(var ctx = new MyContext()) 
{ 
    var entity = ctx.Table.First(t => t.Id == myId); 
    entity.Prop1 = "newValue"; 
    entity.Prop2 = 23; 

    ctx.SaveChanges(); 
} 
당신은 아래 목록에 foreach 루프를 사용할 수 있습니다
+0

여러 개의 ID가오고 있습니다. List checkList에 적어도 10 개의 객체가 있음을 의미합니다), 각 객체 데이터베이스의 행에 해당하므로 목록에서 값을 가져 와서 테이블 행의 여러 열을 어떻게 업데이트합니까? – ankur

0

:

public static void UpdateCheckList(List<CheckListRequest> checkList) 
{ 
    checkList.foreach(CL =>{ 
       CheckListRequest objCLR= DataContext.CheckListRequests 
       .SingleOrDefault(E => E.Id == CL.Id); 
     objCLR.IsChecked = CL.IsChecked; 
     objCLR.Comment = CL.Comment; 
     }); 

    DataContext.SaveChanges(); 
} 
관련 문제