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
例三、
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
通过事务更新操作。
不过需要注意的是,这个相加或者相减的值要与字段的类型一致,要手动先转换好。