高效易用数据访问框架功能预览(二)(求指教)

1.高性能(该框架采用纯的ADO.NET进行框架,避免Linq以及反射带来的性能损失);

2.易用性强(配置简单,智能感知,代码生成器的辅助,会sql就可(可以自我性能优化)) ;

3.多数据库支持(整个框架采用工厂模式设计,目前支持oracle,mssql,mysql,sqlite,acess,如果需要可自我扩增)

4.查询新功能(linq一样写代码)

 

我们介绍一下简单的配置文件.

 

 
    <appSettings>
        
<add key="web" value="No" /><!--是否是网站开发-->
        
<add key="databaseName" value="MSSQL" /><!--数据库的类型 还可以写MYSQL,SQLITE,ACCESS等....-->
        
<add key="linkString" value="Server=mainserver;database=HD01SystemDB;Uid=sa;Pwd=123" />
    
</appSettings>

 

 我们再看看我们的代码生成器.

 

 //功能代码预览

    public static void Main(string[] args)
        {
            //1单值查询-----------------------------------
            DBTool db=new DBTool(Table.EventBaseSet);
            db.Where=EventBaseSet.EventID_.Equals_(2);
            var str=db.GetOneField<string>(EventBaseSet.Domain_);
            Console.WriteLine("单值查询:"+str);
            
            //2单行查询---------------
            db.Where=EventBaseSet.Creater_CreaterID_.Equals_(3);
            var entitye=db.GetEntity<EventBaseSet>();
            
            var row=db.GetDestinationFields(EventBaseSet.Domain_,EventBaseSet.HeadBGColor_);
            var domain=row[0];
            
            //3多行查询------------------------------
            db.Where=EventBaseSet.Creater_CreaterID_.BiggerThan_(3);
            var list=db.GetEntitesList<EventBaseSet>();
            var table=db.GetDataTable();
            
             //4复合查询--------------------
            db.Where=EventBaseSet.EventName_.Contains_("er").
                And_(EventBaseSet.Domain_.EqualsStr_("ertertert"));
            var domainName=db.GetOneField<string>(EventBaseSet.Domain_);
            Console.WriteLine("复合查询:"+domainName);
           
           //5多表查询--------------
            db.Where="交叉查询语句";
            db.GetEntitesList<自定义类型>();

            
            
            //6添加数据
            db.SetInsertField(EventBaseSet.Creater_CreaterID_,33);
            db.SetInsertField(EventBaseSet.EnabledBodyHtml_,true);
            db.SetInsertField(EventBaseSet.EventName_,"测试");
            db.SaveChanges();
            var id=db.NewID;
            
            //7更新数据------------------------
            db.Where=EventBaseSet.EventID_.Equals(3);
            db.SetUpdateField(EventBaseSet.EnabledBodyHtml_,false);
            db.SetUpdateField(EventBaseSet.Domain_,"www.badi.com");
            db.SaveChanges();
            
            //8前N行查询----------------
            Console.WriteLine("前N行查询:");
            db.Where=EventBaseSet.EventID_.BiggerThan_(0);
            var list=db.GetTopList<EventBaseSet>(4);
            foreach (var element in list) {
                Console.WriteLine(element.EventName);
            }
            //9删除数据-------------------
            db.Where=EventBaseSet.Creater_CreaterID_.Equals(3);
            db.DeleteWhere(db.Where);
            db.SaveChanges();
            
            //纯sql支持
            var deleteSql="delete from EventBaseSet where EventID=2";
            DBTool.Database.ExecuteOneSql(deleteSql);
            
            //10 json支持
            var json="";
            DBTool.UpdateDatabaseByJSON(json);
            DBTool.InsertDatabaseByJSON(json);
            
            //11纯ADO.NET查询支持(代码生成器),提供代码生成器
            
            //12存储过程支持
            SuperSqlParameter p=new SuperSqlParameter("@a", DbType.Int64,3);
            SuperSqlParameter p2=new SuperSqlParameter("@b",DbType.DateTime,DateTime.Now);
            var list=new Queue<QinParameter>();
            list.Add(p);
            list.Add(p2);
            DBTool.Database.ExecuteProc("myproc",list);
            
            Console.WriteLine("Press any key to continue . . . ");
            Console.Read();
        }

 

若大家感兴趣到时候我发布给大家免费使用.目前正用于我们公司的开发中(实体框架性能很低,不敢用了)

先给大家提供库dll以及生成器 ,若有兴趣请关注(Files/humble/Debug.zip)

posted @ 2011-06-20 14:38  [秦时明月]  阅读(2469)  评论(58编辑  收藏  举报