首页 新闻 会员 周边 捐助

Asp.net Mvc3,SaveChanges无法更新数据

0
悬赏园豆:10 [已解决问题] 解决于 2012-11-22 19:55
  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不知道怎么回事不会向数据库提交数据,但是也不会报错。求解!

Miky.Chou的主页 Miky.Chou | 初学一级 | 园豆:76
提问于:2012-11-02 21:30
< >
分享
最佳答案
0

可以使用反射将model的属性赋值给user,但是不推荐。

可以使用:

db.Entity(user).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
收获园豆:5
alienblog | 菜鸟二级 |园豆:332 | 2012-11-03 01:47

试过,依旧不行‘

   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 | 园豆:76 (初学一级) | 2012-11-03 20:48

@Miky.Chou: 错误提示是什么

alienblog | 园豆:332 (菜鸟二级) | 2012-11-07 13:50
其他回答(1)
0

兄弟 你犯了一个错, 引用类型内存分布 还不太清楚。

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不会变。

收获园豆:5
Qlin | 园豆:2403 (老鸟四级) | 2012-11-02 21:50

请问怎么解决呢?既要保证user 的类型,也要保证他所指向的值

支持(0) 反对(0) Miky.Chou | 园豆:76 (初学一级) | 2012-11-02 22:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册