码迷,mamicode.com
首页 > 其他好文 > 详细

CRL快速开发框架系列教程三(更新数据)

时间:2016-11-08 16:50:36      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:arc   手动   from   lambda表达式   item   rman   sql   upd   分布式   

本系列目录

  1. CRL快速开发框架系列教程一(Code First数据表不需再关心)
  2. CRL快速开发框架系列教程二(基于Lambda表达式查询)
  3. CRL快速开发框架系列教程三(更新数据)
  4. CRL快速开发框架系列教程四(删除数据)
  5. CRL快速开发框架系列教程五(使用缓存)
  6. CRL快速开发框架系列教程六(分布式缓存解决方案)
  7. CRL快速开发框架系列教程七(使用事务)
  8. CRL快速开发框架系列教程八(使用CRL.Package)
  9. CRL快速开发框架系列教程九(导入/导出数据)
  10. CRL快速开发框架系列教程十(导出对象结构)
  11. CRL快速开发框架系列教程十一(大数据分库分表解决方案)
  12. CRL快速开发框架系列教程十二(MongoDB支持)

 正文

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快速开发框架系列教程三(更新数据)

标签:arc   手动   from   lambda表达式   item   rman   sql   upd   分布式   

原文地址:http://www.cnblogs.com/hubro/p/6038524.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!