2014-01-09 124 views
0

我需要更新我的數據庫,但我在SaveChanges()語句中有無效的參數。如何保存模型更改?

我在做什麼錯?

foreach (ViewModels.QuestionVM0 f in qe.QuestionOptions0) 
{ 
    // loop through records to update 
    int aID = qe.ActivityID.Value; 
    int tID = qe.TaskID.Value; 
    int qNo = f.QuestionNo.Value; 

    Models.question1 questionCreate = new question1(); 

    questionCreate.ActivityID = aID; 
    questionCreate.TaskID = tID; 
    questionCreate.QuestionNo = qNo; 


    db.SaveChanges(questionCreate); 
} 

回答

0

您不必將任何內容傳遞給SaveChanges方法。 EF(我猜你使用它)會跟蹤所有的變化,所以它已經知道必須更新什麼。

db.SaveChanges(); 

順便說一句,你不應該在每次迭代時調用SaveChanges。取而代之的是在foreach之後調用它,以使SQL僅達到一次,而不是一次又一次地遍歷每一行。

2

希望這將很好地工作:

int aID, tID, qNo; 
Models.question1 questionCreate; 

foreach (ViewModels.QuestionVM0 f in qe.QuestionOptions0) 
{ 
    // loop through records to update 
    aID = qe.ActivityID.Value; 
    tID = qe.TaskID.Value; 
    qNo = f.QuestionNo.Value; 

    questionCreate = new question1(); 

    questionCreate.ActivityID = aID; 
    questionCreate.TaskID = tID; 
    questionCreate.QuestionNo = qNo; 


    // For Insert new row 
    db.question1.Add(questionCreate); 

    // For Update exsisting row 
    db.Entry(questionCreate).State = EntityState.Modified; 

    db.SaveChanges(); 
} 

您可以在循環後調用db.SaveChanges()。

+2

如果我沒有錯,它的'db.Entry(questionCreate).State = EntityState.Modified;' – dotNETbeginner

+0

是的,你是賴特。 –

+0

嗨,大家抱歉,遲到的回覆我保存更改時出現此錯誤。存儲更新,插入或刪除語句影響了意外數量的行(0)。自實體加載後,實體可能已被修改或刪除。刷新ObjectStateManager條目。 – user3044300