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

时间:2021-06-06 18:35:48
关于EF框架的问题,SaveChanges方法后修改的数据未更新到数据库
传入模型,
从数据库获取订单模型,
然后根据自定义模型修改订单模型.
最后保存
保存最后返回的int 值是0

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

5 个解决方案

#1


返回0不代表不成功。它采用的是异常机制,如果失败了会抛出异常。
而返回值,不同的数据库是不一样的,只能作为参考。像mysql就可能返回0

#2


引用 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;

把改实体模型状态改为,未更新

#3


如果有下面的这种立即更新方式,可能会更直观:


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

#4


引用 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;

把改实体模型状态改为,未更新

你说的是对的。另外第三句Attach可以不要

#5


你是重庆亿奇达科技的吧。

#1


返回0不代表不成功。它采用的是异常机制,如果失败了会抛出异常。
而返回值,不同的数据库是不一样的,只能作为参考。像mysql就可能返回0

#2


引用 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;

把改实体模型状态改为,未更新

#3


如果有下面的这种立即更新方式,可能会更直观:


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

#4


引用 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;

把改实体模型状态改为,未更新

你说的是对的。另外第三句Attach可以不要

#5


你是重庆亿奇达科技的吧。