介紹一個輕量級的ORM 二


上一篇文章簡單的介紹了這個ORM的很基本的用法。

似乎看不出這個ORM有什么特別的地方,是的,這個ORM並不太特別。我認為他簡單易用是他的一個特點。

接上一篇

同過Sql語句填充實體

可能有時候有非常復雜的條件用來過濾記錄

this.Trans = new StreamContext("NIX");
List<ZULABELMEntity> dd = this.Trans.Querys<ZULABELMEntity>(Sql語句);

 

在性能方面個人感覺似乎也免強過得去,因為沒有跟那些太牛的ORM做過比較,只是簡單的跟Dapper做了測試比較,比較的結果如文章結尾所示。

測試程序我也不是很清楚是否公正。

測試代碼如下。

 

View Code
namespace JitEngine.TDriver
{
    using Dapper;
    using Dot.StreamObject;
    using Muki.Entity;
    using System;
    using System.Collections.Generic;
    using System.Data.SqlClient;
    using System.Diagnostics;
    using System.Linq;
    using System.Threading;

    public class Multiple
    {
        private StreamContext Trans;

                public void Dapper(string _dbAdapter,string cSQLString,int times,int top)
                {
                    GC.Collect();
                    int gc0 = GC.CollectionCount(0);
                    int gc1 = GC.CollectionCount(1);
                    int gc2 = GC.CollectionCount(2);            
                    System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
                    stopwatch.Start();
        
                    SqlConnection connection = GetOpenConnection(_dbAdapter);
                    long duration1=0;
                    int rec=0;
                    string xx="";
                    for (int x=0;x<times;x++)
                    {
                        List<ZULABELMEntity> dd= connection.Query<ZULABELMEntity>(cSQLString).ToList();
        
                        foreach (ZULABELMEntity test in dd)
                        {
                            xx=test.LABEL_ID;
                            rec++;
                        }
                    }
                    duration1 = stopwatch.ElapsedMilliseconds;
                    Console.WriteLine("");
                    Console.WriteLine(xx);        
          Console.WriteLine(string.Concat(new object[] { "Dapper: 記錄數 ", rec, " 時間 ", duration1, "ms" }));
                    Console.WriteLine("GC 0:" + (GC.CollectionCount(0) - gc0).ToString());
                    Console.WriteLine("GC 1:" + (GC.CollectionCount(1) - gc1).ToString());
                    Console.WriteLine("GC 2:" + (GC.CollectionCount(2) - gc2).ToString());            
                }

        public void Querys(string _dbAdapter, string cSQLString, int times, int top)
        {
            GC.Collect();
            int gc0 = GC.CollectionCount(0);
            int gc1 = GC.CollectionCount(1);
            int gc2 = GC.CollectionCount(2);
            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();
            this.Trans = new StreamContext("NIX");
            long duration1 = 0L;
            int rec = 0;
            string xx = "";
            for (int x = 0; x < times; x++)
            {
                List<ZULABELMEntity> dd = this.Trans.Querys<ZULABELMEntity>(cSQLString);
                foreach (ZULABELMEntity test in dd)
                {
                    xx = test.LABEL_ID;
                    rec++;
                }
            }
            duration1 = stopwatch.ElapsedMilliseconds;
            Console.WriteLine("");
            Console.WriteLine(xx);
            Console.WriteLine(string.Concat(new object[] { "Querys: 記錄數 ", rec, " 時間 ", duration1, "ms" }));
            Console.WriteLine("GC 0:" + ((GC.CollectionCount(0) - gc0)).ToString());
            Console.WriteLine("GC 1:" + ((GC.CollectionCount(1) - gc1)).ToString());
            Console.WriteLine("GC 2:" + ((GC.CollectionCount(2) - gc2)).ToString());
        }

        public static SqlConnection GetOpenConnection(string x)
        {
            SqlConnection connection = new SqlConnection(x);
            connection.Open();
            return connection;
        }

        public static void Main(string[] args)
        {
            string _dbAdapter = "server=192.168.28.125;database=fms_muki;uid=sa;pwd=m123456;";
            Setting.Instance().RegisterDbConnectionInfo("NIX", "MsSqlServer", _dbAdapter);
            StreamContext Trans = new StreamContext("NIX") {
                Writeable = true
            };
            for (int i = 0; i <= 100; i++)
            {
                ZULABELMEntity _AddNewEntity = new ZULABELMEntity {
                    UID_CODE = "xxxx",
                    LANG_CODE = "ENG",
                    LABEL_ID = "temp" + i
                };
                Trans.RetrieveEntity(_AddNewEntity);
                if (!_AddNewEntity.Verified)
                {
                    _AddNewEntity.LANG_NAME = "temp-new" + i;
                }
                else
                {
                    _AddNewEntity.LANG_NAME = "temp-update" + i;
                }
                Trans.SaveChanges(_AddNewEntity);
            }
            Trans.Commit();
            Thread.Sleep(500);
            Multiple _t = new Multiple();
            int times=10;
            string cSQLString = "SELECT [ZULABELM].[LABEL_ID] AS [LABEL_ID],[ZULABELM].[LANG_CODE] AS [LANG_CODE],[ZULABELM].[UID_CODE] AS [UID_CODE],[ZULABELM].[LANG_NAME] AS [LANG_NAME],[ZULABELM].[ZADD_DATE] AS [ZADD_DATE],[ZULABELM].[ZADD_USER] AS [ZADD_USER],[ZULABELM].[ZCHG_DATE] AS [ZCHG_DATE],[ZULABELM].[ZCHG_FLAG] AS [ZCHG_FLAG],[ZULABELM].[ZCHG_USER] AS [ZCHG_USER],[ZULABELM].[ZSECURITY_CODE1] AS [ZSECURITY_CODE1],[ZULABELM].[ZSECURITY_CODE2] AS [ZSECURITY_CODE2],[ZULABELM].[ZSECURITY_CODE3] AS [ZSECURITY_CODE3],[ZULABELM].[ZSECURITY_CODE4] AS [ZSECURITY_CODE4],[ZULABELM].[ZSECURITY_CODE5] AS [ZSECURITY_CODE5],[ZULABELM].[ZSECURITY_CODE6] AS [ZSECURITY_CODE6],[ZULABELM].[ZSECURITY_RIGHT] AS [ZSECURITY_RIGHT] FROM [ZULABELM]";
            _t.Querys(_dbAdapter, cSQLString, times, 0);
            _t.Dapper(_dbAdapter, cSQLString, times, 0);
            Console.WriteLine("調換位置");
            _t.Dapper(_dbAdapter, cSQLString, times, 0);
            _t.Querys(_dbAdapter, cSQLString, times, 0);
            Console.WriteLine("按任意鍵退出");
            Console.ReadLine();
        }

    }
}

 

 

 

 

代碼打包下載


免責聲明!

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



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