stuInfo user; using (snzkDataEntities db = new snzkDataEntities()) { //var xx=Request.Form["x"].ToString(); string idcard = "51090219960829264x"; user = db.stuInfo.SingleOrDefault(x => x.idCard == idcard); if (user != null) { user = model; user.areaCode = Request.Form["x"].ToString(); db.SaveChanges(); TempData["updateMsg"] = "提交成功"; } else { TempData["updateMsg"] = "提交失败"; } } return View(user);
这里的SaveChanges不知道怎么回事不会向数据库提交数据,但是也不会报错。求解!
可以使用反射将model的属性赋值给user,但是不推荐。
可以使用:
db.Entity(user).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
试过,依旧不行‘
user.areaCode = Request.Form["x"].ToString(); user.stuid = 98829; user.postCode = "11123"; // db.Set<stuInfo>().Attach(user); if (db.Entry<stuInfo>(user).State == EntityState.Unchanged) db.Entry<stuInfo>(user).State = EntityState.Modified; db.SaveChanges(); TempData["updateMsg"] = "提交成功";
帮我看看。。
@Miky.Chou: 错误提示是什么
兄弟 你犯了一个错, 引用类型内存分布 还不太清楚。
user = db.stuInfo.SingleOrDefault(x => x.idCard == idcard);
//这句, user变量 是在堆栈,指向 的托管堆db.stuInfo.SingleOrDefault(x => x.idCard == idcard); 假设是A
user = model;
//这句 user变量 赋了一个新值,即user指向 model,假设托管堆区是B。user现在是指向B,不再指向A,即没有A的引用了,不能操作到A了,后面操作的user只是在操作B,跟A没关系。当然A不会变。
请问怎么解决呢?既要保证user 的类型,也要保证他所指向的值