分享

Moon.ORM- 4.4

 quasiceo 2012-12-09

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

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

第一部分论性能

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

例如:

List<North.Orders> list=DBFactory.GetEntitiesWithHighSpeed<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

 

4
0
(请您对文章做出评价)
博主上一篇:Moon.ORM全攻略.Moon.ORM4.3稳定版(及代码生成器企业版)发布.
首页上一篇:使用HTML5 Web存储的localStorage和sessionStorage方式进行Web页面数据本地存储
首页下一篇:模拟器详解
posted @ 2012-12-08 17:15 [秦时明月] Views(680) Comments(8) Edit 收藏

#1楼 2012-12-08 17:48 | 路过秋天  
加油,坚持不一定胜利,但放弃一定失败。。。,推荐一个!

#2楼 2012-12-08 17:55 | 路过秋天  
顺便提一下,CYQ.Data在上面的示例写错了,应该是这样用的:
1
2
3
4
5
6
7
using(MAction action = new MAction(TableNames.Customers))
                {
                    if (action.Fill("CustomerID>1"))//查询ID>888的结果中取ID最大的的单行数据
                    {
                        var list=action.Data.ToEntity<North.Customers>();
                    }
                }

如果内部再调用action.Select()等于查询所有
如果是要查询满足条件的某一部分,应该这样用:
1
2
3
4
5
using(MAction action = new MAction(TableNames.Customers))
                {
                        var list=action.Select("CustomerID>1").ToList<North.Customers>();
                     
                }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多