CRL快速开发框架系列教程三(更新数据)
Posted hubro
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CRL快速开发框架系列教程三(更新数据)相关的知识,希望对你有一定的参考价值。
本系列目录
- CRL快速开发框架系列教程一(Code First数据表不需再关心)
- CRL快速开发框架系列教程二(基于Lambda表达式查询)
- CRL快速开发框架系列教程三(更新数据)
- CRL快速开发框架系列教程四(删除数据)
- CRL快速开发框架系列教程五(使用缓存)
- CRL快速开发框架系列教程六(分布式缓存解决方案)
- CRL快速开发框架系列教程七(使用事务)
- CRL快速开发框架系列教程八(使用CRL.Package)
- CRL快速开发框架系列教程九(导入/导出数据)
- CRL快速开发框架系列教程十(导出对象结构)
- CRL快速开发框架系列教程十一(大数据分库分表解决方案)
- CRL快速开发框架系列教程十二(MongoDB支持)
- CRL快速开发框架系列教程十三(嵌套查询)
正文
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
以上是关于CRL快速开发框架系列教程三(更新数据)的主要内容,如果未能解决你的问题,请参考以下文章