.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; }
    }

[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 guochao
117        /// </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             try
134             {
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 = t.UserId;
146                 parameters[1].Value = t.UserName;
147                 parameters[2].Value = t.UserPwd;
148                 parameters[3].Value = t.UserEmail;
149                 parameters[4].Value = t.TrueName;
150                 parameters[5].Value = t.IsLock;
151                 parameters[6].Value = t.CreateId;
152                 parameters[7].Value = 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 guochao
164         /// </summary>
165         /// <param name="UserId">UserId</param>
166         /// <returns>返回bool</returns>
167         public bool Delete(int UserId)
168         {
169             bool result = true;
170             try
171             {
172                 gcContext.Delete(UserId);
173             }
174             catch (Exception ex)
175             {
176                 result = false;
177             }
178             return result;
179         }

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

个人邮箱:[email protected],有问题可以留言和发邮件。

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

Gc.Db的Demo相关代码下载

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

时间: 2024-08-14 17:28:17

.net高效数据库访问框架(附带orm功能)的相关文章

[开源].NET数据库访问框架Chloe.ORM

前言 13年毕业之际,进入第一家公司实习,接触了 EntityFramework,当时就觉得这东西太牛了,访问数据库都可以做得这么轻松.优雅!毕竟那时还年轻,没见过世面.工作之前为了拿个实习机会混个工作证明,匆匆忙忙学了两个月的 C#,就这样,稀里糊涂的做了程序员,从此走上了一条不归路.那会也只知道 SqlHelper,DataTable.ORM?太高档上,没听说过.虽然在第一家公司只呆了两个月,但让我认识了 EntityFramework,从此也走上了 ORM 的不归路...纯纯的实体,增改删

“Zhuang.Data”轻型数据库访问框架(二)框架的入口DbAccessor对象

目录: “Zhuang.Data”轻型数据库访问框架(一)开篇介绍 “Zhuang.Data”轻型数据库访问框架(二)框架的入口DbAccessor对象 先来看一段代码 DbAccessor dba = DbAccessor.Create(); var dt = dba.QueryDataTable("select * from sys_product where productid=#Id#",new {Id=1}); Console.WriteLine(DataTableUtil.

“Zhuang.Data”轻型数据库访问框架(开篇介绍)

框架介绍 该框架主要用于数据库访问,封装了包括: 1.sql智能参数转换: 2.sql语句存储于配置文件: 3.sql查询输出实体或实体集: 4.分页查询: 5.批量写入: 6.简单的ORM功能: ……,该框架的设计思想来源于现在公司所用的一套数据访问框架,但本框架其内部的代码和架构为本人全新设计,不依赖于其它第三方类库(当然如果使用的是mysql或oracle的要添加引用其对应的数据库ado.net实现类库),基于.Net2.0. 框架Nuget安装及源码地址 Nuget地址:https://

java数据库访问框架

数据库设计三大范式 http://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html 数据库范式——通俗易懂[转] http://blog.sina.com.cn/s/blog_46d817650100yj2i.html浅谈SQL SERVER中事务的ACID http://www.cnblogs.com/CareySon/archive/2012/01/29/2331088.htmlJTA 深度历险 - 原理与实现 http://w

数据库访问性能优化

特别说明: 1.  本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2.  本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也可以参考,但许多观点不适合于KV数据库或内存数据库或者是基于SSD技术的数据库: 3.  本文未深入数据库优化中最核心的执行计划分析技术. 读者对像: 开发人员:如果你是做数据库开发,那本文的内容非常适合,因为本文是从程序员的角度来谈数据库性能优化. 架构师:如果你已经是数据库应用的架构师,那本文的

数据库访问性能优化 Oracle

特别说明: 1.  本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2.  本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也可以参考,但许多观点不适合于KV数据库或内存数据库或者是基于SSD技术的数据库: 3.  本文未深入数据库优化中最核心的执行计划分析技术. 读者对像: 开发人员:如果你是做数据库开发,那本文的内容非常适合,因为本文是从程序员的角度来谈数据库性能优化. 架构师:如果你已经是数据库应用的架构师,那本文的

[转]面向程序员的数据库访问性能优化法则

原文地址:http://blog.csdn.net/yzsind/article/details/6059209 特别说明: 1.  本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2.  本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也可以参考,但许多观点不适合于KV数据库或内存数据库或者是基于SSD技术的数据库: 3.  本文未深入数据库优化中最核心的执行计划分析技术. 读者对像: 开发人员:如果你是做数据库开发,那

Oracle学习总结(8)—— 面向程序员的数据库访问性能优化法则

特别说明: 1.  本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2.  本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也可以参考,但许多观点不适合于KV数据库或内存数据库或者是基于SSD技术的数据库: 3.  本文未深入数据库优化中最核心的执行计划分析技术. 读者对像: 开发人员:如果你是做数据库开发,那本文的内容非常适合,因为本文是从程序员的角度来谈数据库性能优化. 架构师:如果你已经是数据库应用的架构师,那本文的

面向程序员的数据库访问性能优化法则

此文于2010-12-08被推荐到CSDN首页 如何被推荐? 面向程序员的数据库访问性能优化法则 特别说明: 1.  本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2.  本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也可以参考,但许多观点不适合于KV数据库或内存数据库或者是基于SSD技术的数据库: 3.  本文未深入数据库优化中最核心的执行计划分析技术. 读者对像: 开发人员:如果你是做数据库开发,那本文的内容非常适