首页 新闻 会员 周边

entity framework 如何实现update number += 1,-+ 这样的?

-1
[已关闭问题] 关闭于 2015-01-15 14:54

c#:

var obj = db.cost.Where(c => c.Id == Id).First();

obj.number += 1;

db.SaveChanges();

 

最终的sql:

update cost set number=1 where Id = '7558B45A-CD99-48F4-991D-3609041AF4E5'

如何实现 number +=1 ?

Y2zz的主页 Y2zz | 菜鸟二级 | 园豆:393
提问于:2015-01-15 12:00
< >
分享
所有回答(2)
0

你自己上面的代码不就可以了么?

mushishi | 园豆:230 (菜鸟二级) | 2015-01-15 12:33

 可以的话我就不用来问了嘛。。。。。

支持(0) 反对(0) Y2zz | 园豆:393 (菜鸟二级) | 2015-01-15 14:07
0

两个方法

1、直接执行SQL语句,这个你知道怎么做吧?

2、使用第三方扩展方法,也就是说EF原生是不支持这样的。

3、这个是高级一点的知识,如果你是刚刚入门,就还用你最上面的写法,别担心啥性能之类的。

扩展方法可以实现,你想学习的话,搜索entity framework + batch update

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-01-15 12:46

其实上面的代码我这执行发现一个问题,包含在foreach中的时候只有最后一条产生了update

支持(0) 反对(0) Y2zz | 园豆:393 (菜鸟二级) | 2015-01-15 14:09

@Y2zz: 完全不知道你在说啥,哪儿有FOREACH?

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2015-01-15 14:22

@爱编程的大叔: 

foreach(var x in list) {

    var obj = db.cost.Where(c => c.Id == x.id).First();

    obj.number += x.number;

    db.SaveChanges();

}

支持(0) 反对(0) Y2zz | 园豆:393 (菜鸟二级) | 2015-01-15 14:24

@Y2zz: LINQ使用FOREACH时,注意加一句

foreach(var x in list) {
     var id=x.id;
    var obj = db.cost.Where(c => c.Id == id).First();
    obj.number += x.number;
    db.SaveChanges();
}

这个是要时刻牢记的三大纪律八项注意。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2015-01-15 14:26

@爱编程的大叔: 看样子还是个兵哥哥咯,为兵哥哥点赞!

支持(0) 反对(0) Y2zz | 园豆:393 (菜鸟二级) | 2015-01-15 14:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册