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 ?
你自己上面的代码不就可以了么?
可以的话我就不用来问了嘛。。。。。
两个方法
1、直接执行SQL语句,这个你知道怎么做吧?
2、使用第三方扩展方法,也就是说EF原生是不支持这样的。
3、这个是高级一点的知识,如果你是刚刚入门,就还用你最上面的写法,别担心啥性能之类的。
扩展方法可以实现,你想学习的话,搜索entity framework + batch update
其实上面的代码我这执行发现一个问题,包含在foreach中的时候只有最后一条产生了update
@Y2zz: 完全不知道你在说啥,哪儿有FOREACH?
@爱编程的大叔:
foreach(var x in list) {
var obj = db.cost.Where(c => c.Id == x.id).First();
obj.number += x.number;
db.SaveChanges();
}
@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(); }
这个是要时刻牢记的三大纪律八项注意。
@爱编程的大叔: 看样子还是个兵哥哥咯,为兵哥哥点赞!