2016-11-08 95 views
1

通常tipical EF6外接應編輯添加模型數據

var newStudent = new Student(); 
newStudent.StudentName = "Bill"; 
context.Students.Add(newStudent); 
context.SaveChanges(); 

對我來說,我使用這個邏輯

var student = context.Students.Find(id); 
if (student == null) 
{ 
    student = new Student(); 
    context.Students.Add(student); 
} 
student.blabla1 = "..."; 
student.blabla2 = "..."; 
//other 20 blabla... 
student.StudentName = "Bill"; // StudentName is a required field 
context.SaveChanges(); 

這是一個不好的做法,編輯數據添加到模型方法對實體後框架6?如果在另一個方法上調用savechanges,並且我的實際線程剛好在「StudentName」的賦值之前,注入上下文可能會引發錯誤?

回答

0

爲什麼你不能像這樣做...

var student = context.Students.Find(id); 

    if (student == null) 
    { 
     student = new Student(); 
     ModifyBlabla(student);//call private method 
     context.Students.Add(student); 
    } 
    else 
    { 
    ModifyBlabla(student);//call private method 
    } 

    context.SaveChanges(); 

爲編輯方法:

private void ModifyBlabla(Student student) 
{ 
    student.blabla1 = "..."; 
    student.blabla2 = "..."; 
    //other 20 blabla... 
    student.StudentName = "Bill"; 
} 
+0

那是因爲newStudent(是的,我的錯誤,我已經更名爲 「newStudent」 來「學生」)可以存在,如果存在,我不需要僅設置「學生名」,但也需要設置其他20個屬性。 – Sauron

+0

請查看更新後的帖子。 – Sampath