Oracle数据库 123456789101112131415161718192021222324252627282930313233343536publicclassOracle : IDBAccessor{#region IDBAccessor 成员privatestringcommandStr string.Empty;privatestaticstringconnectionString ;privateSystem.Data.IDbConnection oraConnection newSystem.Data.OracleClient.OracleConnection(connectionString);publicintExcute(){if(oraConnection.State ! System.Data.ConnectionState.Open)oraConnection.Open();try{using(System.Data.IDbCommand command oraConnection.CreateCommand()){command.CommandText commandStr;returncommand.ExecuteNonQuery();}}catch(System.Exception){return-1;}finally{}}publicvoidQuery(){thrownewNotImplementedException();}#endregion}其他的几个类型的数据库我们就不一一举例说明了当然我这里面的接口中并没有考虑把数据库连接也定义成接口,让所有的都从这个接口进行继承,因为这个不是本章讨论的重点,本章只是简单的分析与设计如何实现通用把数据层访问。下面我们来说说对象关系映射的实现。我们比较常见的方式目前就这样的2种方式第一种方式想必大家都比较了解的无论是JAVA中的Hibernate还是.NET中的Nhibernate都是这样的方式,以XML文件的方式把数据库中的表列属性与实体的属性一一对应。第二种方式则是在类文件中硬编码书写数据库列与实体之间的映射关系。下面我们来分析下这二种方式的利弊以上大概描述了各自的有点下面再阐述下各自的缺点。当然以上的2种形式各有优缺点我们已经讲述了XML配置文件中现有的开源框架中采用这种形式的框架有Nhibernate。而采用类文件映射的框架其实有很多但是他们的思想相对来说都是一样的。不管是XML文件形式,还是类文件形式他们的主要观点都是实现如何把实体的属性与数据库表字段的对应这个才是核心的内容。下面我们给出一种简单的思路去完成这样的映射当然我们这里是以类文件形式给出示例。其实博客园的很多人都写过类文件映射的实例。我这里当然也只是抛砖引玉不足之处在所难免还请大家多多提出意见。我给出的方式是通过特性(Attribute)反射(Rflection)的思想来实现ORM映射。具体相应代码如下123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121/// summary/// Model中的字段属性特性/// /summary[AttributeUsage(AttributeTargets.All, AllowMultiple false)]publicclassPropertyAttribute : Attribute{privatestringdbColumnName;privateboolisPrimary;privateDbType dbType;privateobjectdefaultValue;privateboolisIdentify;privateintlength;publicstringDbColumnName{get{returnthis.dbColumnName;}set{this.dbColumnName value;}}publicboolIsPrimary{get{returnthis.isPrimary;}set{this.isPrimary value;}}publicboolIsIdentify{get{returnthis.isIdentify;}set{this.isIdentify value;}}publicDbType DbType{get{returnthis.dbType;}set