2017-12-14 19 views
0

Button2は編集ボタンです。テキストボックスに表示されているデータを編集し、編集を押して値を変更し、データベースに保存し、それらをグリッドビューに表示することになっています。しかし何らかの理由でnewEmployee.FirstNameがnullであると言われていますが、どうしますか?編集したデータをデータベースに保存できません。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; 
    } 
+0

働いていた場合upvote答えを受け入れて行ってください –

答えて

0

FirstOrDefaultあなたは

をチェックしていないで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; 
} 

ようnullチェックを行うことで、あなたがemployeeを取得したりしていないことを確認してください

FirstOrDefaultの代わりに、を1つのIDでマップする1人の従業員として使用する必要があります。なぜなら、IDのほとんどは、プライマリ・ヴァルue。複数のレコードを取得することはありません。つまり、レコードを1つだけ受け取ることになります。


あなたが変更された状態にエンティティのステータスを設定するのを忘れ:EntityState.Modified

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

簡単な答えはEmp.FirstNameがnullである理由私が言うことができないと述べた

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

だろうで開始する。あなたのコードでは、次は意味をなさないのいずれか、それは新場合のnewEmployeeは社員を持つことができないので、

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

関連する問題