标签:arc 手动 from lambda表达式 item rman sql upd 分布式
正文
CRL更新数据有多种方式,根据喜好和实际场景调用
只会提交修改过的属性,如果修改量为0,抛出异常
1.字典传参的形式(不推荐)
CRL.ParameCollection c = new CRL.ParameCollection(); c["ProductName"] = "product1"; Code.ProductDataManage.Instance.Update(b => b.Id == 4, c);
2.按匿名对象
Code.ProductDataManage.Instance.Update(b => b.Id == 4, new { ProductName = "product1" });
3.按对象差异更新(当对象不是查询创建)荐
这里手动通知哪些属性被更改了,以在更新时只修改被更改的属性
var p = new Code.ProductData() { Id = 4 }; //手动修改值时,指定修改属性以在Update时识别,分以下几种形式 p.Change(b => b.BarCode);//表示值被更改了 p.Change(b => b.BarCode, "123");//通过参数赋值 p.Change(b => b.BarCode == "123");//通过表达式赋值 p.Cumulation(b => b.ProductName, "1");//表示按字段累加 Code.ProductDataManage.Instance.Update(b => b.Id == 4, p);//指定查询更新
4.当对象是查询创建
属性更改后,CRL能自动识别哪些被更改了
p = Code.ProductDataManage.Instance.QueryItem(b => b.Id > 0); p.UserId += 1;//只会更新UserId p.ProductName = "2342342"; Code.ProductDataManage.Instance.Update(p);//按主键更新,主键值是必须的
5.使用完整查询关联更新
按SQL的形式,关联更新
右边$符表示关联表
var query = Code.OrderManage.Instance.GetLambdaQuery(); query.Join<Code.ProductData>((a, b) => a.Id == b.Id && b.Number > 10); c = new CRL.ParameCollection(); c["UserId"] = "$UserId";//order.userid=product.userid c["Remark"] = "2222";//order.remark=2222 Code.OrderManage.Instance.Update(query, c); //等效语句为 update order set userid=ProductData.userid,remark=‘2222‘ from ProductData where order.id=ProductData.id and ProductData.number<10
标签:arc 手动 from lambda表达式 item rman sql upd 分布式
原文地址:http://www.cnblogs.com/hubro/p/6038524.html