我的数据库访问框架之1

 

 

 

    1.背景

公司的项目一开始使用实体框架,但对于公司的需求其性能不如意,故此开发一个适合公司需求的数据库框架.虽然市面的有很多类似 框架,虽然各有所长但短处尤在.对秋天兄的cyq.data的思想颇有所感,cyq的发布使我茅塞顿开.mysoft的风格看似linq进而触发我使用扩 展.在此感谢他们.

 

   2.简介

     Qin.Data是一个通用数据库处理框架(包含MSSQL ACCESS SQLITE EXCEL MYSQL DB2 ORACLE...只要你愿意实现接口就可以).很便捷地进行常用数据库操作(增删改查).其性能是几近纯ADO.NET.对于实体的查询采用emit实 现,如果您还不满意可用此框架的代码生成器直接生成纯ADO.NET SQL形式.其主要特色就是性能和便捷的操作.

 相关高级功能:

   多数据库同时支持:你可以同时使用多种数据库在一个项目中.

   便捷的事务支持:你只需设置一个属性就可以达到事务操作的目的.

   强大的UI系统: 原始及支持常用而复杂配置的界面组件.(最高效便捷且美观的无刷新分页组件,强大且美观的表格控件,便捷的HTML编辑器....)

   便捷易用的语法糖查询功能:让你查询更加便捷

   便捷的数据库升级处理:你根本不用担心数据库给你带来的困扰,它给你提供数据层生成功能且直接编译.

   强大的代码生成器: 提供整个数据层的代码及实体生成,且提供纯ADO支持以及代码编译功能.且多类型数据库支持

 

  3.初始化配置

     

配置文件
<appSettings>
        <add key="web" value="NO" />//是否是web开发
        <add key="databaseName" value="MSSQL" />//数据库类型
        <add key="linkString" value="Server=www.wwe.com.cn;database=HD01SystemDB;Uid=ss;Pwd=ss"< /span> />//连接字符串
</appSettings>

 

 

 

 
查询
查询实体

          DBTool db=new DBTool(Table.EventBaseSet);//指定表  或者
          //DBTool db=new DBTool(Table.TableName_Qin);

           db.Where=EventBaseSet.EventID_.Equals_(3);//锁定记录
            var data=db.GetEntity<EventBaseSet>();//获取实体

 
查询指定字段
              DBTool db=new DBTool(Table.EventBaseSet);
               db.Where=EventBaseSet.EventID_.Equals_(32);
               var name=db.GetOneField<string>(EventBaseSet.EventID_); 

 
多字段查询
            DBTool db=new DBTool(Table.EventBaseSet);
            db.Where=EventBaseSet.EventID_.Equals_(32);
            var row=db.GetDestinationFields(EventBaseSet.EnabledBodyHtml_,EventBaseSet.Days_);

复合条件查询

            DBTool db=new DBTool(Table.EventBaseSet);
            db.Where=EventBaseSet.EventID_.BiggerThan_(32).And_
                (EventBaseSet.EventName_.Contains_("你好").OR_(EventBaseSet.Days_.BiggerThan_(22));

嵌套查询 

            DBTool db=new DBTool(Table.EventBaseSet);
            db.Where= EventBaseSet.Creater_CreaterID_.Equals_(CreaterSet.CreaterID_.SelectFrom_(Table.CreaterSet).Where_(
            CreaterSet.Name_.EqualsStr_("a")));
 自定实体查询(包括多表查询)
    var sql="复制的sql语句";
    var data=DBTool.Database.GetEntity& amp;lt;自定义实体>(sql); 

 

 

            
数据添加操作
            DBTool db=new DBTool( Table.CitySet);

           // db.StartTransaction=true;//是否开启事务

            db.SetInsertField(CitySet.CID_,"10001");
            db.SaveChanges();
            var newID=db.NewID;//新生成的自增主键 



 
 
 
          

数据更新操作
            db.SetUpdateField(CitySet.CName_,"城市一");
            db.SetUpdateField(CitySet.CID_,"1--1");
            db.Where= 
            CitySet.
            CID_.Equals_(2)
            db.SaveChanges();

           
数据删除
 db.DeleteWhen=EventBaseSet.EventID_.Equals_(2);
 db.SaveChanges();

 


分页功能
  前端代码:

<%=Tool.GetPager("", "显示分页的位置", "1000条数据", "每页10条数据")%>

 调用后台的分页代码.

      public List<HallPromotion> GetHallPromotionList(int startIndex, int endIndex, string orderby)
        {
            DBTool db = new DBTool(Table.PromotionSet);
            db.Where = "1=1";
            var count = db.GetCount();
            var list = db.GetPageListDesc<PromotionSet>(startIndex, endIndex, orderby);//指定索引索引分页.
            var haList = new List<PromotionSet>();
             // ..........
            return ret;
        }

 

 

 

代码生成器及数据库升级问题


Qin.Data中不必担心这些东西,因为实体全由代码生成器生 成,更新一次数据库,你重新生成一次DLL(代码生成器带有编译功能)

 

 


 

posted @ 2011-10-12 14:36  [秦时明月]  阅读(1997)  评论(15编辑  收藏  举报