.net事务
来源:互联网 发布:重庆双诚网络是培 编辑:程序博客网 时间:2024/05/17 21:38
事务是将一系列操作作为一个单元执行,要么成功,要么失败,回滚到最初状态。
在事务处理术语中,事务要么提交,要么中止。若要提交事务,所有参与者都必须保证对数据的任何更改是永久的。不论系统崩溃或是发生其他无法预料的事件,更改都必须是持久的。只要有一个参与者无法做出此保证,整个事务就会失败。事务范围内的所有数据更改将回滚到特定设置点。如图所示:
在一个系统中存在事务是必须的,通过各种查找资料,大概了解到在.net中大概分为4种事务。在这里先简单介绍一下,具体实现在以后呈现。
1.数据库事务
在数据库中使用的自身的事务,一般写在存储过程中。
优点:执行效率最佳
缺点:第一,事务仅在数据库中调用,难以实现复杂的逻辑。
第二,复用率很差,更换一个数据库就不能进行调用。
代码结构:
Create procedure pro_exampletran//开始事务Begin Tran//提交事务Commit tran//回滚事务Rollback tran2.代码中的事务
在代码中直接写的事务。
优点:简单,和数据库中的实现差不多。但是移植数据库不受影响。
缺点:不能实现分布式,也就是跨数据库调用。
代码结构:
//使用new新生成一个事务 SqlTransaction myTrans=myConnection.BeginTransaction();Try{/*事务性代码块*///事务提交myTrans.Commit();}Catch(Exception e){//事务回滚myTrans.Rollback();}Finally{myConnection Close();}
3.TransactionScope事务
TransactionScope类事务用户限定事务代码块,自动可以提升为分布式事务。上面两种类型的事务只能操作同一个数据库,不能跨数据库操作,这时就可以用TransactionScope事务。可以操作不同的数据库。
代码结构:
public void exampletransactionScope() { using (TransactionScope trans = new TransactionScope()) { /*在这里实现事务性工作*/ //提交事务。 trans.Complete(); } }
4.com+事务
在COM+中,提供了完整的事务服务,我们可以利用它来完成分布式应用程序的事务控制。
代码结构:
public void examplecomtransaction() { //指定事务类型 sc.Transaction = TransactionOption.Required; //设置启动跟踪 sc.TrackingEnabled = true; //创建一个上下文,该上下文的配置由作为 cfg 参数传递的 ServiceConfig 对象来指定。 //随后,客户端和服务器端的策略均被触发,如同发生了一个方法调用。 //接着,新的上下文被推至上下文堆栈,成为当前上下文 ServiceDomain.Enter(sc); try { //提交事务 ContextUtil.SetComplete(); } catch { //回滚事务 ContextUtil.SetAbort(); throw; } finally { conn.Close(); //触发服务器端的策略,随后触发客户端的策略,如同一个方法调用正在返回。 //然后,当前上下文被弹出上下文堆栈,调用 Enter 时正在运行的上下文成为当前的上下文。 ServiceDomain.Leave(); } }事务还在慢慢研究中,尤其是最后两个事务几乎没有怎么用过,接下来就在实践中慢慢探索。
- .NET事务、分布式事务
- .net事务
- .NET----事务
- .Net 事务
- .net事务
- .net事务
- .net 事务
- .net分布式事务例子
- .NET的事务控制
- .net 中的事务总结
- .NET的事务控制.
- .net 中的事务总结
- ASP.NET事务
- .NET事务的用法
- .net分布式事务例子
- .net事务小例
- .net中的分布式事务
- Asp.net 事务用法
- .NET MVC4环境下,SqlSever数据库的配置与连接方法。
- linux添加tomcat服务
- (1) 面试 --- 2014支付宝JAVA笔试题面试分享
- 【LeetCode】088.Merge Sorted Array
- 【深入浅出IOS开发】创建Model类型Controller
- .net事务
- Codeforces Round #297 (Div. 2) B - Pasha and String
- ZendOpcache安装与配置
- Qt自定义控件的开发和使用
- 在Win7下安装ubuntukylin-14.04.2-desktop-amd64
- Tika基本使用
- Java内存泄露的理解与解决
- 域名同一文件路径,不同的域名指向不同的robots文件
- 第3周项目1-三角形类的构造函数(1、带参数的构造函数)