如何保存模型更改?

时间:2014-01-09 03:20:58

标签: asp.net-mvc entity-framework asp.net-mvc-4

我需要更新我的数据库,但我在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);
}

2 个答案:

答案 0 :(得分: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()。

答案 1 :(得分:0)

您不必向SaveChanges方法传递任何内容。 EF(我猜你使用它)会不断跟踪所有更改,因此它已经知道必须更新的内容。

db.SaveChanges();

顺便说一句,你不应该在每次迭代时调用SaveChanges。在foreach之后调用它来使SQL只到达一次,而不是一次又一次地到达每一行。