事物TransactionScope

如果修改、删除、添加一类操作涉及到多张表,那么最好用事物 trans.Complete();保证多张表的同时修改

using (TransactionScope trans = new TransactionScope())
{
                        if (result.Result)
                        {
                            foreach (SubOrders subOrders in listSubOrders)
                            {
                                if (result.Result)
                                {
                                    result.Result = _orderDao.UpdateSubOrders(subOrders) > 0;
                                }
                            }

                        }
                        if (result.Result)
                        {
                            OrderPaymentDetails orderPaymentDetails = new OrderPaymentDetails()
                            {
                                Amount = mainOrders.TotalPay,
                                Bank = category.ToString(),
                                CreateTime = DateTime.Now,
                                MainOrderID = mainOrders.MOID,
                                Method = 1,
                                PayParam = string.Join("&", listParam)
                            };
                            result.Result = _orderDao.InsertOrderPaymentDetails(orderPaymentDetails) > 0;
                        }
                        if (result.Result)
                        {
                            trans.Complete();
                        }
}
时间: 2024-10-13 01:50:49

事物TransactionScope的相关文章

TransactionScope async await async 事物

上菜 async await 机制 确实便捷开发   多线程时 如何一致性如何保证呢? public async Task<ActionResult<IEnumerable<string>>> Get() { using (var trans = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { try { Console.WriteLine("1:id----" + T

ADO.NET中的TransactionScope何时需要启用MSTDC(分布式事务管理)

我们知道在ADO.NET中可以用TransactionScope来将多个SqlConnection(多个数据库连接)执行的Sql语句放入一个事物中提交或取消,但是使用TransactionScope的时候也要额外小心,因为当TransactionScope在特殊情况下需要启动MSTDC(分布式事务管理),那么我们来看看什么时候TransactionScope需要启动MSTDC呢? 首先来声明下本例中代码和数据库的环境,首先本例中C#代码运行的电脑和SqlServer数据库所在的电脑是局域网中的两

我们一起学习WCF 第十篇Wcf中实现事物

数据一致性在工作中显得非常重要,有时候我们库中出现脏数据导致程序报错,但是又很难发现这样的错误,所以为了数据的完整性建议在程序中加入事物. 什么是事物:我们都有团队合作吧,比喻团队有3个人,a负责设计,b负责前端,c负责后台,那么他们三个就是一个整体,哪一个人那里出了问题就要被打回. 第一步:我们开始定义个一个接口 [ServiceContract] public interface IUserInfo { [OperationContract] int AddInfo(); } 第二步当然是实

关于TransactionScope 使用

在去年的项目中使用了TransactionScope,现在总结下TransactionScope的使用说明 一.TransactionScope是.Net Framework 2.0之后,新增了一个名称空间.它的用途是为数据库访问提供了一个“轻量级”[区别于:SqlTransaction]的事物.使用之前必须添加对 System.Transactions.dll 的引用. 二.代码实例 //设置事务隔离级别transactionOption.IsolationLevel = System.Tra

TransactionScope类

命名空间:System.Transactons MSDN解释:使代码块成为事务性代码,此类不能被继承. 百度空间:在项目中引用using System.Transaction命名空间.在using 中定义了一个TransactionScope,相当于定义了一个事物范围即,这个事务作用域为using内.在using 作用域内,如果没有scope.Complete()命令,那么scope在销毁时,会自动回滚所有的操作. msdn代码示例 try{ using(Transaction scope=ne

TransactionScope的用法

using (TransactionScope ts = new TransactionScope()) { Model.user_login_log model = new Model.user_login_log(); model.user_id = 0; model.user_name=""; model.remark = Guid.NewGuid().ToString(); model.login_time=DateTime.Now; model.login_ip=Reques

.net EF 事物 订单流水号的生成 (二):观察者模式

针对.net EF 事物 订单流水号的生成 (一)  的封装. 数据依然不变. using System; using System.Linq; using System.Transactions; namespace ConsoleApplication1 { class Program { static pengbgDBEntities db = new pengbgDBEntities(); static void Main(string[] args) { try { DAL dal =

sql中的Tran和C#中的TransactionScope介绍

sql 中的Tran 俩种写法 第一种写法 try catch: Begin TRY Begin Tran transaction DECLARE @ServiceOrderId INT SET @ServiceOrderId=73342 DECLARE @ErrorCount INT SET @ErrorCount = 0 --调整积分通订单状态 支付完成 UPDATE dbo.ServiceOrderNew SET OrderStatus = 2,UpdateDate = GETDATE()

分布式事物嵌套事物

1.内部事物 需 using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))  否则会出现“已终止事物” 的错误 TransactionScope 分布式事务的使用案例 以及简单说明 TransactionScope 是的.net Framework2.0版本中增加的一个新命名空间.他的用途是为数据库访问提供一个“轻量级”的事物.使用之前必须添加对 System.Transac