Moon.ORM- 4.4 隆重发布,在性能和使用便捷上一挑群雄(mysoft,cyq,pdf)

从性能上讲目前没有性能与moon可比的框架(非纯ADO.NET),便捷上除了实体框架,大家自己使用各框架便可知道.不过我挺喜欢PDF的思路,可以几乎不用反射实现,所以性能很高.在此表示无意战争,只是告诉我的那帮Moon.Orm支持者及还不理解ORM的朋友一点性能上看见.

第一部分论性能

4.4对自动编译方法进行了重构.

例如:

List<North.Orders> list=DBFactory.GetEntitiesH<North.Orders>(OrdersTable.OrderID.BiggerThan(0),"实体所在的程序集");

看代码.

/*
 * 
 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
 */
using System;
using CYQ.Data;
using CYQ.Data.Table;
using CYQ.Entity;
using CYQ.Entity.MyNorthWind;
using MDB;
using Moon.Orm;
using MySoft.Data;
using North;
using PWMIS.DataMap.Entity;

namespace Demo
{
    class Program
    {
        public static void Main(string[] args)
        {
            //---------可能有预处理,这些不管----------------
            PDF.NorthWind.Customers pdft = new PDF.NorthWind.Customers();
            
            OQL qt= new OQL(pdft);
            qt.Select().Where(qt.Condition.AND(pdft.CustomerID,">",1));
            
            var resultt = EntityQuery<PDF.NorthWind.Customers >.QueryList(qt);
            //
            PWMIS.DataProvider.Data.AdoHelper db = PWMIS.DataProvider.Adapter.MyDB.GetDBHelperByConnectionName("pdf");
            using(MAction actiont = new MAction(TableNames.Customers))
            {
                if (actiont.Fill("CustomerID>1"))//查询ID>888的结果中取ID最大的的单行数据
                {
                    var listt=actiont.Select().ToList<North.Customers>();
                }
            }
            DbSession dbSession = new DbSession(new MySoft.Data.SqlServer9.SqlServer9Provider(System.Configuration.ConfigurationSettings.AppSettings["linkString"]));
         
            //dbSession.CacheOff();
            //第一次动态编译
            var test=DBFactory.GetEntitiesH<North.Customers>(CustomersTable.CustomerID.BiggerThan(0),"demo.exe");
            
            var listMysoft=dbSession.From<MySoft.Customers>().Where(MySoft.Customers._.CustomerID>0).ToList<MySoft.Customers>();
            //======================================
            
            long t1=DateTime.Now.Ticks;
            for (int i = 0; i < 800; i++) {
                PDF.NorthWind.Customers pdf = new PDF.NorthWind.Customers();
                
                OQL q = new OQL(pdf);
                q.Select().Where(q.Condition.AND(pdf.CustomerID,">",1));
                
                var result = EntityQuery<PDF.NorthWind.Customers >.QueryList(q);
            }
            long t2=DateTime.Now.Ticks;
            Console.WriteLine("PDF.NET: "+(t2-t1));
            
            long a1=DateTime.Now.Ticks;
            for (int i = 0; i < 800; i++) {//注意我们还多获取了一个实体数据从>0
                var test2=DBFactory.GetEntitiesH<North.Customers>(CustomersTable.CustomerID.BiggerThan(0),"demo.exe");
            }
            var  a2=DateTime.Now.Ticks;
            Console.WriteLine("Moon.Orm:"+(a2-a1));
            
            long c1=DateTime.Now.Ticks;
            for (int i = 0; i < 800; i++) {
                
                using(MAction action = new MAction(TableNames.Customers))
                {
                    if (action.Fill("CustomerID>1"))//查询ID>888的结果中取ID最大的的单行数据
                    {
                        var list=action.Select().ToList<North.Customers>();
                    }
                }
            }
            var c2=DateTime.Now.Ticks;
            Console.WriteLine("CYQ.DATA:"+(c2-c1));
            
            var m1=DateTime.Now.Ticks;
            for (int i = 0; i < 800; i++) {
                var list2=dbSession.From<MySoft.Customers>().Where(MySoft.Customers._.CustomerID>0).ToList<MySoft.Customers>();
                 
            }
            var m2=DateTime.Now.Ticks;
            Console.WriteLine("MySoft:  "+(m2-m1));
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}

运行结果:

第二部分 开发使用便捷性

第一步:打开企业版代码生成器

 

 

第二步:填写项目数据库

第三步:生成实体集或者实体类文件

 

 

第四步:引入实体集或实体类文件到您开发的项目中.

第五步:复制链接字符串

 


 

第六步:粘贴到你项目的配置文件appsettings中

 

 

似乎有的框架不支持可空类型,这个有点不舒服.

测试代码: 


 数据库文件(sql文件)

 

 

 QQ群技术交流:   

     216965349

 

posted @ 2012-12-08 17:15  [秦时明月]  阅读(2691)  评论(23编辑  收藏  举报