2014-06-13 2 views
0

"MaleTeachers"테이블에 남성 교사 만 삽입하려고했지만 프로그램이 실행 된 후 해당 테이블에 교사가 하나만 나타납니다. 또한, "Stuffs"테이블에 교사가 한 명 이상 있지만 "if"기준과 일치하는 사람은 마지막에 삽입 된 사람입니다. 이 코드를 수정 해주십시오. 서비스 구현 :LinQ 쿼리, 하나의 레코드 만 제출/삽입 됨

public void AddTeachers() 
{ 
    DataClasses1DataContext data = new DataClasses1DataContext(); 
    DataClasses2DataContext data2 = new DataClasses2DataContext(); 
    MaleTeacher tchr = new MaleTeacher(); 

    foreach (var d in data.Stuffs) 
    { 
     if (d.stuffSex == true && d.stuffJob == "Teacher") 
     { 
      tchr.teacherName = d.stuffName; 
      tchr.teacherAge = d.stuffAge; 
      tchr.teacherJob = d.stuffJob; 
      tchr.teacherDepartm = "geology"; 
      data2.MaleTeachers.InsertOnSubmit(tchr); 
     } 
    } 

    data2.SubmitChanges(); 

} 
+0

'foreach' 루프 내에서'tchr' 선언을 옮기는 것이 좋습니다. –

+0

위로 가기 MaleTeach를 foreach 루프로 이동하십시오. Y 마지막 교사 만 삽입하고 있습니다. – sdrzymala

+0

명확성을 위해 data2.MaleTeachers.InsertOnSubmit (New MaleTeacher() {...}); –

답변

2

foreach 루프가 있어야합니다.

foreach (var d in data.Stuffs) 
     { 
      if (d.stuffSex == true && d.stuffJob == "Teacher") 
      { 
       MaleTeacher tchr = new MaleTeacher(); 
       tchr.teacherName = d.stuffName; 
       tchr.teacherAge = d.stuffAge; 
       tchr.teacherJob = d.stuffJob; 
       tchr.teacherDepartm = "geology"; 
       data2.MaleTeachers.InsertOnSubmit(tchr); 
      } 
     } 
2

당신 대신 당신은 모든 시간에 다른 MaleTeacher 인스턴스를 생성해야합니다 ... 다시 다시 수정 만 한 intance를 생성하고있다.

MaleTeacher tchr = new MaleTeacher(); 

foreach (var d in data.Stuffs) 
{ 
    if (d.stuffSex == true && d.stuffJob == "Teacher") 
    { 
     tchr.teacherName = d.stuffName; 
     tchr.teacherAge = d.stuffAge; 
     tchr.teacherJob = d.stuffJob; 
     tchr.teacherDepartm = "geology"; 
     data2.MaleTeachers.InsertOnSubmit(tchr); 
     tchr = new MaleTeacher(); 
    } 
} 
관련 문제