Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何保存模型更改?_Asp.net Mvc_Entity Framework_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 如何保存模型更改?

Asp.net mvc 如何保存模型更改?,asp.net-mvc,entity-framework,asp.net-mvc-4,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.q

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

您不必将任何内容传递给
SaveChanges
方法。EF(我猜你在使用它)一直跟踪你的所有更改,所以它已经知道需要更新的内容

db.SaveChanges();

顺便说一句,你不应该每次迭代都调用
SaveChanges
。在
foreach
之后调用它,只访问SQL一次,而不是一次又一次地访问每一行。

希望这能很好地工作:

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()。

如果我没有弄错的话,它的
db.Entry(questionCreate).State=EntityState.Modified嗨,伙计们,很抱歉我在保存更改时遇到了这个错误。Store update、insert或delete语句影响了意外的行数(0)。自加载实体后,实体可能已被修改或删除。刷新ObjectStateManager条目。