最近在想一些自动事务处理的东西,本来想利用COM+的自动事务处理,结果遭遇困难
没有办法,准备利用基于[ThreadStatic]的事务控制器来实现,在ASP.net中配合Global.asax来初始化、提交、回滚事务。应该同样可以实现简单的全局事务控制。但是这样做的缺点:
1. 页面级的事务时间过长
2. 要在代码中控制特别事务
能不能利用Attribute来实现, 象[Transaction(TransactionOption)]之类的Attribute一样控制方法中的事务?
目前的自定义的Attibute似乎只是个标志,要操作程序(透过Reflection)来识别并且处理。并且似乎没有办法让我们在运行时处理处理它。
感谢JGTM http://blog.joycode.com/jgtm2000/posts/13446.aspx 通过动态Proxy也许能提供一些机会执行自定义Attribute.
如果在BLL和DAL层中加入以下Attribute,应该可以少写很多代码:
[MyTransaction(TransactionOption.Supported)]
[MyLog]
[MyErrorHandler]
原来写在方法中的Try/Catch/事务控制/Log处理都将自动执行。
先想这么多,请了解这东西的高手给个指点