现在的位置: 首页 > 综合 > 正文

Moon.NET框架架构及介绍

2011年11月19日 ⁄ 综合 ⁄ 共 4185字 ⁄ 字号 评论关闭

  企业开发宗旨在于高效与便捷以及系统升级与维护的稳定.此框架为此而架构设计,目标在于打造一个高效能的.NET开发框架。

Moon.NET由两部分组成:Qin.Data(一个高性能的ORM系统,其特色是提供便捷的开发和高效的数据库访问性能以及方便便捷的系统升级,内含代码生成器、代码自动编译);Qin.Web(一个快速的ASP.NET服务端框架,内含一个前端js脚本一引擎[有了它,你只需专注于业务逻辑,几乎绝大部分代码由引擎生成]、以及实现权限认证的AOP方案和一个前端UI库).其中的Qin.Data已被用于合富网络有限公司的数据层取代原有的实体框架.

  Qin.Data的相关介绍

  

背景
公司的项目开始实体框架,但对于公司的需求其性能不如意.故此开发一个适合公司需求的数据库框架.虽然市面的有很多类似框架,虽然各有所长但短处尤在.

 

 

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

 

 

特色

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

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

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

4.查询语法糖功能(linq一样写代码)

5.多数据源支持

 

   

配置简单
<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.DeleteWhen=

EventBaseSet.Creater_CreaterID_.Equals(3);

            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();
        }

 

代码生成器
数据库升级问题(我们常常面临数据库表的变动问题)

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

抱歉!评论已关闭.