关于EF框架的问题,SaveChanges方法后修改的数据未更新到数据库

huiji5351 2016-05-26 05:37:10

传入模型,
从数据库获取订单模型,
然后根据自定义模型修改订单模型.
最后保存
保存最后返回的int 值是0

请问怎么让EF框架把我修改的这个模型传入数据库?

...全文
1330 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
维秀斯丢丢 2016-08-25
  • 打赏
  • 举报
回复
你是重庆亿奇达科技的吧。
圣殿骑士18 2016-05-27
  • 打赏
  • 举报
回复
引用 2 楼 huiji5351 的回复:
[quote=引用 1 楼 daixf_csdn 的回复:] 返回0不代表不成功。它采用的是异常机制,如果失败了会抛出异常。 而返回值,不同的数据库是不一样的,只能作为参考。像mysql就可能返回0
返回0的意思是未更改任何数据把. 我的问题解决了

                orders o = eqida.orders.First(name => name.orderno == model.ordersId);
                o.status = model.status;
                eqida.orders.Attach(o);
                eqida.Entry(o).State = System.Data.Entity.EntityState.Modified;
把改实体模型状态改为,未更新[/quote] 你说的是对的。另外第三句Attach可以不要
bluedoctor 2016-05-26
  • 打赏
  • 举报
回复
如果有下面的这种立即更新方式,可能会更直观:


orders o=new orders();
o.orderno= model.ordersId;
o.num=model.num.ToString();
o.status= model.status;

int i= OQL.From(o)
  .Update(o.num,o.status)
  .Where(o.orderno)
  .END
  .Execute();
可以试试这个框架 http://pwmis.codeplex.com
huiji5351 2016-05-26
  • 打赏
  • 举报
回复
引用 1 楼 daixf_csdn 的回复:
返回0不代表不成功。它采用的是异常机制,如果失败了会抛出异常。 而返回值,不同的数据库是不一样的,只能作为参考。像mysql就可能返回0
返回0的意思是未更改任何数据把. 我的问题解决了

                orders o = eqida.orders.First(name => name.orderno == model.ordersId);
                o.status = model.status;
                eqida.orders.Attach(o);
                eqida.Entry(o).State = System.Data.Entity.EntityState.Modified;
把改实体模型状态改为,未更新
圣殿骑士18 2016-05-26
  • 打赏
  • 举报
回复
返回0不代表不成功。它采用的是异常机制,如果失败了会抛出异常。 而返回值,不同的数据库是不一样的,只能作为参考。像mysql就可能返回0

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧