解决方案 »

  1.   

    UpdateModel(db.Records.Single(m => m.id == record.id));
    这一句可以不要的吧....直接db.SaveChanges();
      

  2.   

                     var record = db.Records.Where(m => m.id == 1).FirstOrDefault();
                      record.stateid = 3;//更新状态id
                        UpdateModel(db.Records.Single(m => m.id == record.id));
                        db.SaveChanges();
    UpdateModel(db.Records.Single(m => m.id == record.id));
    这一句是多余的var record = db.Records.Where(m => m.id == 1).FirstOrDefault();
    当执行这一句时,EF的上下文容器,会将从数据库查询数据实体封装到上下文容器的代理类中,此时的状态是unchange
    如果你对实体中属性进行了修改,当执行 db.SaveChanges();的时候,此时代理类的状态是Modified,上下文容器会根据代理类的状态,生成相应SQL语句
      

  3.   

    var record = db.Records.FirstOrDefault(m => m.id == 1);
    UpdateModel(record);
    record.stateid = 3;
    record.id = 1;
    db.SaveChanges();