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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM