Example #1
0
        protected void Button1_Click(object sender, EventArgs e)
        {
            //更新传值有多种方式

            //字典传参的形式
            CRL.ParameCollection c = new CRL.ParameCollection();
            c["ProductName"] = "product1";
            ProductDataManage.Instance.Update(b => b.Id == 4, c);
            //按匿名对象
            ProductDataManage.Instance.Update(b => b.Id == 4, new { ProductName = "product1" });

            //按对象差异更新
            var p = new 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");                //表示按字段累加
            ProductDataManage.Instance.Update(b => b.Id == 4, p); //指定查询更新

            //当对象是查询创建则能自动识别
            p             = ProductDataManage.Instance.QueryItem(b => b.Id > 0);
            p.UserId     += 1;                    //只会更新UserId
            p.ProductName = "2342342";
            ProductDataManage.Instance.Update(p); //按主键更新,主键值是必须的

            //使用完整查询关联更新
            var query = OrderManage.Instance.GetLambdaQuery();

            query.Join <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
            OrderManage.Instance.Update(query, c);
            //等效语句为 update order set userid=ProductData.userid,remark='2222' from ProductData where order.id=ProductData.id and ProductData.number<10
        }