2014-01-09 72 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