数据库组件 Hxj.Data (二十七)(字段组合更新)

30 篇文章 0 订阅
30 篇文章 0 订阅

Hxj.Data V1.5.1版本开始支持字段组合更新。

例如:update table set a=b+c

        update table set a=a+1

(+、-、*、/、%)依次类推。

 

下面将举具体的例子。(例子只是为了测试效果,没有实际意义)

例一、

DbSession.Default.Update<Products>(Products._.UnitPrice, Products._.ReorderLevel + Products._.UnitPrice, Products._.ProductID == 1);
生成的sql如下:
Text: 
UPDATE [Products] SET [UnitPrice]=[Products].[ReorderLevel] + [Products].[UnitPrice] 
WHERE [Products].[ProductID] = @mjpxqimmtmiyguvv 
 
Parameters: 
@mjpxqimmtmiyguvv[Int32] = 1 

就是将UnitPrice字段的值更新为UnitPrice加上ReorderLevel字段的值。

 

例二、

DbSession.Default.Update<Products>(Products._.UnitPrice, Products._.UnitPrice + 1, Products._.ProductID == 1);
生成的sql如下:
Text: 
UPDATE [Products] SET [UnitPrice]=[Products].[UnitPrice] + @tszvynxwnukkjuzj 
WHERE [Products].[ProductID] = @anuixieadujzvvka 
 
Parameters: 
@tszvynxwnukkjuzj[Int32] = 1 
@anuixieadujzvvka[Int32] = 1 
这里就是将UnitPrice字段的值加1。
 
例三、
using (DbTrans trans = DbSession.Default.BeginTransaction())
{
    trans.Update<Products>(Products._.UnitPrice, Products._.UnitPrice + 1.4, Products._.ProductID == 1);

    trans.Update<Products>(Products._.UnitPrice, Products._.UnitPrice - 2, Products._.ProductID == 2);

    trans.Commit();
}

生成的sql:

Text: 
UPDATE [Products] SET [UnitPrice]=[Products].[UnitPrice] + @zeylmhakevldbgfn 
WHERE [Products].[ProductID] = @enbemtqnigeugdej 
 
Parameters: 
@zeylmhakevldbgfn[Double] = 1.4 
@enbemtqnigeugdej[Int32] = 1 
 
 
Text: 
UPDATE [Products] SET [UnitPrice]=[Products].[UnitPrice] - @vypfmbnjgdpeakqm 
WHERE [Products].[ProductID] = @dqwlfxqjconzrqa 
 
Parameters: 
@vypfmbnjgdpeakqm[Int32] = 2 
@dqwlfxqjconzrqa[Int32] = 2 

 

通过事务更新操作。

 

不过需要注意的是,这个相加或者相减的值要与字段的类型一致,要手动先转换好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值