>

Button2는 편집 버튼입니다. 이제 텍스트 상자에 표시되는 데이터를 편집하고 편집을 눌러 값을 변경하고 데이터베이스에 저장하고 그리드 뷰에 표시해야합니다. 그러나 어떤 이유로 newEmployee.FirstName이 null 인 경우 어떻게해야합니까?

private void button2_Click(object sender, EventArgs e)
    {
        Employee Emp = SetValues(textBox1.Text, textBox2.Text, textBox3.Text);
        bool result = UpdateEmployee(Emp);
        ClearAll();
        Display();
    }
    public bool UpdateEmployee (Employee Emp) 
    {
        bool result = false;
        using (var entity = new NorthwindEntities())
        {               
            Employee newEmployee = entity.Employee.Where(x => x.EmployeeID == Emp.EmployeeID).Select(x => x).FirstOrDefault();
            newEmployee.FirstName = Emp.FirstName;
            newEmployee.LastName = Emp.LastName;
            newEmployee.BirthDate = Emp.BirthDate;                
            entity.SaveChanges();
            result = true;
        }
        return result;
    }
    private Employee SetValues(string FirstName, string LastName, string BirthDate)
    {
        Employee Emp = new Employee();
        Emp.FirstName = FirstName;
        Emp.LastName = LastName;
        Emp.BirthDate = BirthDate;
        return Emp;
    }


  • 답변 # 1

    간단한 대답은

    newEmployee.FirstName = Emp.FirstName ?? string.Empty;

    저는 Emp.FirstName이 null 인 이유를 알 수 없습니다. 코드에서 다음 중 어느 것도 의미가 없습니다

    Employee newEmployee = entity.Employee.Where(x => x.EmployeeID == Emp.EmployeeID).Select(x => x).FirstOrDefault();
    
    

    newEmployee가 새로운 직원 인 경우 EmployeeID를 가질 수 없으므로

  • 답변 # 2

    employee 를 받고 있는지 확인하십시오  또는 null 를 수행하여  아래와 같이 확인하십시오

    Employee newEmployee = entity.Employee.Where(x => x.EmployeeID == 
      Emp.EmployeeID).Select(x => x).FirstOrDefault();
    if(newEmployee!=null)
    {          
      newEmployee.FirstName = Emp.FirstName;
      newEmployee.LastName = Emp.LastName;
      newEmployee.BirthDate = Emp.BirthDate;                
      entity.SaveChanges();
      result = true;
    }
    
    

    FirstOrDefault 때문에 오류가 발생한 것 같습니다  확인하지 않는 null 값을 반환하는 중

    FirstOrDefault 대신

     당신은 SingleOrDefault 를 사용해야합니다  ID가 하나만 매핑되는 직원은 한 명뿐이므로 대부분의 경우 기본 값으로 생각하기 때문입니다. 두 개 이상의 레코드를 얻지 못할 것입니다. 즉, 단일 레코드 만받습니다.

    <시간>

    엔터티의 상태를 수정 된 상태로 설정하는 것을 잊었습니다. : EntityState.Modified

    using (var context = new BloggingContext()) 
    {
        //set stus to modified  
        context.Entry(existingBlog).State = EntityState.Modified; 
        // Do some more work...  
        context.SaveChanges(); 
    }
    
    

  • 이전 ios - UIBarButtonItem이 비활성화 된 이유는 무엇입니까?
  • 다음 bigdata - HiveQL에서 쿼리 결과를 키 값 양식으로 가져 오는 방법