阅读 200

CAD.NET二次开发过程中的记录——关于事务管理器的问题

一、几个关于事务管理器的问题

1、Transaction对象,要放在Using语句里面使用,因为它自身也需要dispose。

2、如果只是查询信息,就不需要提交或回滚

3、非Using语句开启事务,最好调用commit方法,ent.dispose也需要调用。结束事务需要调用 Dispose()方法,调用commit没有负面影响,不调用commint或者abort,在环境里面虽然看不出什么影响,但transaction对象不是这么用的,会严重影响运行速度

4、在事务期间打开的所有对象在事务结束时都会被关闭。

5、如果使用了.net 语言中的 Using 和 End Using 关键字来表示事务的开始和结束,就不需要调用 Dispose()方法。

6、在关闭事务之前,应使用 Commit()方法提交所作的任何修改。在关闭事务前,如果没有提交修改,那么可以将任何修改回滚到事务启动之前的状态

 

二、使用事务管理器管理事务

1、启动事务之后,我们就可以用 GetObject()方法打开对象。

2、创建及添加到数据库的任何新对象也应同时调用 AddNewlyCreatedDBObject()方法将其添加到事务

3、对象编辑完并添加到数据库后,可以使用事务对象的 Commit()方法保存对数据库的修改并关闭所有打开的对象

4、事务处理完毕后,调用 Dispose()方法关闭事务

 

三、升级打开对象与降级打开对象

1、我们可以使用 UpgradeOpen()方法与DowngradeOpen()方法改变对象当前的打开模式

2、不必为每个UpgradeOpen()调用都配上一个 DowngradeOpen()调用,因为对象或事务的关闭能将实体的打开状态充分地清理干净

3、当只是查询一个对象时,就不要以写模式打开。以读模式打开对象并查询其属性比以写模式打开对象并查询效率高得

4、以写模式打开对象会启动该对象的撤销登记。撤销登记用来跟踪对象的修改,这样,所做的任何修改都能被回滚

5、如果不能确定是否需要修改对象,最好以读模式打开对象,然后在需要时再升级为写模式。这样做能帮助减少程序开销

 

四、事务的嵌套(事务的嵌套是指在一个事务的边界当中嵌入另一个事务,事务管理器会将事务保存在堆栈中,最近的事务在堆栈顶部可以通过 TransactionManager.TopTransaction()方法获得

1、里层的事务可以使用外层事务打开的对象

2、如果最里层的事务终止了,则在此事务内的所有对象操作将取消,对象返回到此事务开始时候得状态,对象指针也将不再可用。

3、事务嵌套使用的时候必须一层一层的提交,而且必须父层的事务提交后,子层的事务才能生效,否则退回。

 

 

 

 

原文:https://www.cnblogs.com/taogeli/p/14772708.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐