C#用Attribute实现AOP事务

C#用Attribute实现AOP事务

ID:37909635

大小:99.50 KB

页数:10页

时间:2019-06-02

C#用Attribute实现AOP事务_第1页
C#用Attribute实现AOP事务_第2页
C#用Attribute实现AOP事务_第3页
C#用Attribute实现AOP事务_第4页
C#用Attribute实现AOP事务_第5页
资源描述:

《C#用Attribute实现AOP事务》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、前言使用Attribute来实现方法级别事务一直是我的梦想,浅谈Attribute[C#

2、Attribute

3、DefaultValueAttribute]有体现我的无奈,Attribute确实是真真切切的非侵入式的东西(其实我是想侵入的:)),前有DUDU的Attribute在.net编程中的应用系列文章,但是总是离想象和需求有那么点出入,通过三天的努力,Google的陪伴,下面和大家一起分享我这三天的成果用Attribute实现AOP事务吧!致谢文章1.Aspect-OrientedProgrammingEnablesBetterCodeEncapsulationa

4、ndReuse关键性的CallContext是在这里发现的。2.C#Attribute在.net编程中的应用(转)这篇文章原文地址找不到了,DUDU的Attribute在.net编程中的应用系列文章就是这篇文章的分解,他写到了五,后面的大家可以从这篇文章里面提前看到了。阅前注意1.整篇文章的核心和突破点在于上下文Context的使用,务必注意CallContext在整个程序中起到的作用2.本文中看到的SqlHelper使用的是微软SqlHelper.cs。3.本文重点在于如何实现,并且已经测试通过,只贴关键性代码,所以请认真阅读,部分代码直接拷贝下来运行是会出错的!正

5、文首先我们来看一段未加事务的代码:SqlDAL.cspublicabstractclassSqlDAL{#regionConnectionStringprivateSqlConnectionStringBuilder_ConnectionString=null;///

///字符串连接///publicvirtualSqlConnectionStringBuilderConnectionString{get{if(_ConnectionString==null

6、

7、string.IsNullOrEmpty(_ConnectionStr

8、ing.ConnectionString)){_ConnectionString=newSqlConnectionStringBuilder(Configurations.SQLSERVER_CONNECTION_STRING);}return_ConnectionString;}set{_ConnectionString=value;}}#endregion#regionExecuteNonQuerypublicintExecuteNonQuery(stringcmdText){returnSqlHelper.ExecuteNonQuery(ConnectionSt

9、ring.ConnectionString,CommandType.Text,cmdText);}publicintExecuteNonQuery(stringcmdText,CommandTypetype){returnSqlHelper.ExecuteNonQuery(ConnectionString.ConnectionString,type,cmdText);}publicintExecuteNonQuery(stringcmdText,CommandTypetype,paramsSqlParameter[]cmdParameters){returnSqlHe

10、lper.ExecuteNonQuery(ConnectionString.ConnectionString,type,cmdText,cmdParameters);}#endregion代码说明:1.本类对SqlHelper.cs进一步封装。2.Configurations.SQLSERVER_CONNECTION_STRING替换成自己的连接字符串就行了。UserInfoAction.cspublicclassUserInfoAction:SqlDAL{///

///添加用户///publicvoidAdd(UserInfous

11、er){StringBuildersb=newStringBuilder();sb.Append("UPDATE[UserInfo]SETPassword='");sb.Append(user.Password);sb.Append("'WHEREUID=");sb.Append(user.UID);ExecuteNonQuery(sql);}}如果我们要加入事务,通常的办法就是在方法内try、catch然后Commit、Rollback,缺点就不说了,下面我会边贴代码边讲解,力图大家也能掌握这种方法:)先贴前面两个被我修改的类SqlDAL.cspu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。