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