首页 > 代码库 > .net高效数据库访问框架(附带orm功能)

.net高效数据库访问框架(附带orm功能)

     Gc.Db和Gc.Cache相关文章我已经写有一段时间了,谢谢大家关注。最近看了以前写的Gc.Db和SimpleOrm,对这两个框架作了优化和整合。此篇文章主要Gc.Db优化内容作下介绍。


   下篇文章会配合着我整理的对Memcached和Redis分布式缓存框架Gc.CacheGc.Db和Gc.Cache整理成一个简单三层Demo.谢谢大家继续关注。


一.什么是Gc.Db及优化内容?
   Gc.Db是基于Ado.net编写的数据库框架.
  (1)目前支持MsSQL、Mysql、Sqlite、Oracle、Oledb数据库.
  (2)支持对以上数据库sql语句、参数化SQL语句、存储过程、事务操作。
  (3)Gc.Db编写宗旨:开发快捷,性能。此框架本身就是数据库访问框架,只是为了让各位开发者编写更少对单表基本操作重复代码,添加了部分ORM功能,对单表基本操作(增加、删除、更改、查询)由GcDbContext来完成,
同时对单或多表复杂操作由GcDbHelper来完成,所有数据库的操作都由这两个类完成。
   (4)Gc.Db配置简单和使用起来都是非常简单,只需作实体类中作下配置,引入Gc.Db和Gc.Da dll文件就可以了。
   (5)Gc.Db 提供了方便对数据库参数化操作功能,Orm功能也全都是使用参数化SQL语句来完成,保证了数据安全性。

二.Gc.Db框架使用方法:
  1.下载我编写的Gc.Db和Gc.Da dll文件(这个一会会提供下载地址),在自己项目中引用这两个dll.


  2.自己添加实体类,为每个属性添加自定义属性,请注意如果使用orm功能,每张表必须有主键,实体类中代码如下。

 public class UserInfo    {        [Id("UserId")]       public int UserId { get; set; }        [Column("UserName")]        public string UserName { get; set; }        [Column("UserPwd")]        public string UserPwd { get; set; }        [Column("UserEmail")]        public string UserEmail { get; set; }        [Column("TrueName")]        public string TrueName { get; set; }        [Column("IsLock")]        public int IsLock { get; set; }        [Column("CreateId")]        public int CreateId { get; set; }        [Column("CreateTime")]        public DateTime CreateTime { get; set; }    }
View Code

  [Id("UserId")]表示UserId为主键。

  [Column("UserName")]表示UserName普通字段名


 3.在数据访问类中创建GcDbContext和GcDbHelper对象对数据库进行操作,具体代码如下。

 

  1  /// <summary>  2         /// 数据库连接串  3         /// </summary>  4         private static string dbConnstring = System.Configuration.ConfigurationManager.AppSettings["TestDbConnstring"];  5   6         /// <summary>  7         /// 数据库参数前缀  8         /// </summary>  9         private static string pramStr = DbOperator.CreateParamStr(GcEnumDbType.MsSql); 10  11         /// <summary> 12         /// 数据库访问对象 13         /// </summary> 14         private IGcDbHelper dbHelper = new GcDbHelper(GcEnumDbType.MsSql); 15  16         /// <summary> 17         /// 提供ORM功能数据库操作对象 18         /// </summary> 19         private GcDbContext<UserInfo> gcContext = new GcDbContext<UserInfo>(dbConnstring, GcEnumDbType.MsSql); 20        21  22        /// <summary> 23         /// 保存数据--create by guochao 24        /// </summary> 25         /// <param name="t">UserInfo对象</param> 26         /// <returns>返回UserInfo对象</returns> 27         public bool Insert(UserInfo t) 28         { 29             bool result = true; 30             try 31             { 32                 gcContext.Insert(t); 33             } 34             catch (Exception ex) 35             { 36                 result = false; 37             } 38             return result; 39         } 40  41         /// <summary> 42         /// 保存数据--create by guochao 43         /// </summary> 44         /// <param name="t">UserInfo对象</param> 45         /// <returns>返回bool</returns> 46         public bool Insert2(UserInfo t) 47         { 48             bool result = true; 49             StringBuilder sql = new StringBuilder("insert into UserInfo(UserId,UserName,UserPwd,UserEmail,TrueName,IsLock,CreateId,CreateTime) values("); 50             sql.AppendFormat("{0}p0,", pramStr); 51             sql.AppendFormat("{0}p1,", pramStr); 52             sql.AppendFormat("{0}p2,", pramStr); 53             sql.AppendFormat("{0}p3,", pramStr); 54             sql.AppendFormat("{0}p4", pramStr); 55             sql.AppendFormat("{0}p5,", pramStr); 56             sql.AppendFormat("{0}p6", pramStr); 57             sql.AppendFormat("{0}p7", pramStr); 58             sql.Append(")"); 59             try 60             { 61                 dbHelper.ExecuteNonQueryWithSqlPress(dbConnstring, sql.ToString(), CommandType.Text, 62                     t.UserId, 63                     t.UserName, 64                     t.UserEmail, 65                     t.UserPwd, 66                     t.IsLock 67                     ); 68             } 69             catch (Exception ex) 70             { 71                 result = false; 72             } 73             return result; 74         } 75  76         /// <summary> 77         /// 保存数据--create by guochao 78         /// </summary> 79         /// <param name="t">UserInfo对象</param> 80         /// <returns>返回bool</returns> 81         public bool Insert3(UserInfo t) 82         { 83             bool result = true; 84             StringBuilder sql = new StringBuilder("insert into UserInfo(UserId,UserName,UserPwd,UserEmail,TrueName,IsLock,CreateId,CreateTime) values("); 85             sql.AppendFormat("{0}UserId,", pramStr); 86             sql.AppendFormat("{0}UserName,", pramStr); 87             sql.AppendFormat("{0}UserPwd,", pramStr); 88             sql.AppendFormat("{0}UserEmail,", pramStr); 89             sql.AppendFormat("{0}TrueName,", pramStr); 90             sql.AppendFormat("{0}IsLock,", pramStr); 91             sql.AppendFormat("{0}CreateId,", pramStr); 92             sql.AppendFormat("{0}CreateTime", pramStr); 93             sql.Append(")"); 94             try 95             { 96                 IDbDataParameter[] parameters = { 97                     dbHelper.CreateParam("UserId",t.UserId), 98                     dbHelper.CreateParam("UserName",t.UserName), 99                     dbHelper.CreateParam("UserPwd",t.UserPwd),100                     dbHelper.CreateParam("UserEmail",t.UserEmail),101                     dbHelper.CreateParam("TrueName",t.TrueName),102                     dbHelper.CreateParam("IsLock",t.IsLock),103                     dbHelper.CreateParam("CreateId",t.UserId),104                     dbHelper.CreateParam("CreateTime",t.CreateTime),105                     };106                 dbHelper.ExecuteNonQuery(dbConnstring, sql.ToString(), CommandType.Text,parameters);107             }108             catch (Exception ex)109             {110                 result = false;111             }112             return result;113         }114 115        /// <summary>116         /// 保存数据--create by guochao117        /// </summary>118         /// <param name="t">UserInfo对象</param>119         /// <returns>返回bool</returns>120         public bool Insert4(UserInfo t)121         {122             bool result = true;123             StringBuilder sql = new StringBuilder("insert into UserInfo(UserId,UserName,UserPwd,UserEmail,TrueName,IsLock,CreateId,CreateTime) values(");124             sql.AppendFormat("{0}UserId,", pramStr);125             sql.AppendFormat("{0}UserName,", pramStr);126             sql.AppendFormat("{0}UserPwd,", pramStr);127             sql.AppendFormat("{0}UserEmail,", pramStr);128             sql.AppendFormat("{0}TrueName,", pramStr);129             sql.AppendFormat("{0}IsLock,", pramStr);130             sql.AppendFormat("{0}CreateId,", pramStr);131             sql.AppendFormat("{0}CreateTime", pramStr);132             sql.Append(")");133             try134             {135                 IDbDataParameter[] parameters = {136                     new SqlParameter(pramStr+"UserId",SqlDbType.Int),137                     new SqlParameter(pramStr+"UserName",SqlDbType.NVarChar,50),138                     new SqlParameter(pramStr+"UserPwd",SqlDbType.NVarChar,100),139                     new SqlParameter(pramStr+"UserEmail",SqlDbType.NVarChar,50),140                     new SqlParameter(pramStr+"TrueName",SqlDbType.NVarChar,50),141                     new SqlParameter(pramStr+"IsLock",SqlDbType.Int),142                     new SqlParameter(pramStr+"CreateId",SqlDbType.Int),143                     new SqlParameter(pramStr+"CreateTime",SqlDbType.DateTime),144                     };145                 parameters[0].Value =http://www.mamicode.com/ t.UserId;146                 parameters[1].Value =http://www.mamicode.com/ t.UserName;147                 parameters[2].Value =http://www.mamicode.com/ t.UserPwd;148                 parameters[3].Value =http://www.mamicode.com/ t.UserEmail;149                 parameters[4].Value =http://www.mamicode.com/ t.TrueName;150                 parameters[5].Value =http://www.mamicode.com/ t.IsLock;151                 parameters[6].Value =http://www.mamicode.com/ t.CreateId;152                 parameters[7].Value =http://www.mamicode.com/ t.CreateTime;153                 dbHelper.ExecuteNonQuery(dbConnstring, sql.ToString(), CommandType.Text, parameters);154             }155             catch (Exception ex)156             {157                 result = false;158             }159             return result;160         }161 162         /// <summary>163         /// 根据主键删除数据--create by guochao164         /// </summary>165         /// <param name="UserId">UserId</param>166         /// <returns>返回bool</returns>167         public bool Delete(int UserId)168         {169             bool result = true;170             try171             {172                 gcContext.Delete(UserId);173             }174             catch (Exception ex)175             {176                 result = false;177             }178             return result;179         }
View Code

 以上代码中添加方法分别演示了采用上框架提供了方便的参数数组操作的方法。

个人邮箱:joyet_guochao@163.com,有问题可以留言和发邮件。

注:我这代码里没有放数据库,大家只要根据代码中表字段,自己建个数据库,建个和代码对应数据表,改下数据库配置串就行。

Gc.Db的Demo相关代码下载